主页 > 知识库 > Postgresql 数据库转义字符操作

Postgresql 数据库转义字符操作

热门标签:广州电销机器人公司招聘 400电话申请客服 济南外呼网络电话线路 江苏400电话办理官方 电话机器人怎么换人工座席 地图标注要花多少钱 天津开发区地图标注app 移动外呼系统模拟题 电销机器人能补救房产中介吗

产生问题

Postgresql数据库运行下面insert命令

insert into mapping_mac_brand(_id,mac,brand) values(777,'D86595','Toy\'s Myth Inc.')

提示下面的警告:

Warning: nonstandard use of ' in a string literal

HINT: Use '' to write quotes in strings or use the escape string syntax(E...')

解决办法

1.名词解释

string literal :字符串字面量

escape string:转义字符串

escape character:转义字符

Escape Sequence:转义字符串

转义字符:

所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

在Java中,不管是String.split(),还是正则表达式,有一些特殊字符需要转义, 这些字符是 ( [ { / ^ - $ ¦ } ])。

Java中转义方法为字符前面加上"\\",这样在split、replaceAll时就不会报错了; 不过要注意,String.contains()方法不需要转义。

但是对于下面表格指定的字符,还是一个\即可转义。比如\n。

2.常见的转义字符

字母前面加上反斜线"\"来表示那些不能显示的ASCII字符.称为转义字符.如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

所有的转义字符和所对应的意义:

转义字符

意义

ASCII码值(十进制)

\a

响铃(BEL)

007

\b

退格(BS) ,将当前位置移到前一列

008

\f

换页(FF),将当前位置移到下页开头

012

\n

换行(LF) ,将当前位置移到下一行开头

010

\r

回车(CR) ,将当前位置移到本行开头

013

\t

水平制表(HT) (跳到下一个TAB位置)

009

\v

垂直制表(VT)

011

\\

代表一个反斜线字符''\'

092

'

代表一个单引号(撇号)字符

039

\"

代表一个双引号字符

034

\0

空字符(NULL)

000

\ddd

1到3位八进制数所代表的任意字符

三位八进制

\xhh

1到2位十六进制所代表的任意字符

二位十六进制

3.解决方法

1.修改数据库配置,让数据库支持\作为转义字符

早期Postgresql普通字符串中的\是作为转义字符对待的,所以\\最终会认为是\。但是这是不符合SQL标准的,所以在PG 9.1及以后,普通字符串中的\不会被任务是转义字符,而E'xx\x'中的\才会被当作是转义字符。

为了使以前的代码可以在新的PG版本中运行,便有了standard_conforming_strings这个选项,这个选项默认是on,表示按照SQL标准处理字符串,当设置为off时,按照PG的旧版本处理字符串。运行下面命令,开启这个选项即可:

ALTER ROLE xx IN DATABASE yy SET standard_conforming_strings TO off;

2. 用新版本支持的转义字符。''或者 E'',将含有转义的字符串放在单引号里面

'\\' 或者 E'\\'

补充:PG特殊字符的转义

实例1

imos=# select * from test;
 name 
------
 c_d
 ab
 _b_c
(3 rows)

imos=# select * from test where name like '_b%';
 name 
------
 ab
 _b_c
(2 rows)

imos=# select * from test where name like 'd_b%' escape 'd';
 name 
------
 _b_c
(1 row)
imos=# select * from test where name like '\_b%' ;
 name 
------
 _b_c
(1 row)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:
  • 解决postgresql 数字转换成字符串前面会多出一个空格的问题
  • postgreSQL 数字与字符串类型转换操作
  • postgresql 实现16进制字符串转10进制数字

标签:濮阳 海西 宝鸡 杭州 辛集 榆林 昭通 温州

巨人网络通讯声明:本文标题《Postgresql 数据库转义字符操作》,本文关键词  Postgresql,数据库,转义,字符,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Postgresql 数据库转义字符操作》相关的同类信息!
  • 本页收集关于Postgresql 数据库转义字符操作的相关信息资讯供网民参考!
  • 推荐文章