这篇文章给大家介绍怎么在Postgresql数据库中转义字符,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
产生问题
Postgresql数据库运行下面插入命令
insert into mapping_mac_brand (_id、mac、品牌),值(777 & # 39;D86595& # 39;, & # 39;玩具\ & # 39;s Myth 公司强生# 39;)
提示下面的警告:
警告:非标准使用\ & # 39;在一个字符串
提示:使用& # 39;& # 39;写引用字符串或使用转义字符串的语法(E…& # 39;)
解决办法
1。名词解释
字符串文字:字符串字面量
转义字符串:转义字符串
转义字符:转义字符
转义序列:转义字符串
转义字符:
所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加“\“来表示常见的那些不能显示的ASCII字符,如\ 0 \ t \ n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。
在Java中,不管是String.split(),还是正则表达式,有一些特殊字符需要转义,这些字符是([{/^ -美元,brvbar;}])。
Java中转义方法为字符前面加上“\ \”,这样在分裂,replaceAll时就不会报错了;不过要注意,String.contains()方法不需要转义。
但是对于下面表格指定的字符,还是一个\即可转义。比如\ n .
2 .常见的转义字符
字母前面加上反斜线“\“来表示那些不能显示的ASCII字符。称为转义字符。如\ 0 \ t \ n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。
所有的转义字符和所对应的意义:
转义字符
意义
ASCII码值(十进制)
\
响铃(贝尔)
007
\ b
退格(BS),将当前位置移到前一列008年
\ f
换页(FF),将当前位置移到下页开头012年
\ n
换行(低频),将当前位置移到下一行开头010年
\ r
回车(CR),将当前位置移到本行开头013年
\ t
水平制表(HT)(跳到下一个制表位置)
\ 009 v
垂直制表(VT)
011
\ \
代表一个反斜线字符& # 39;& # 39;\ & # 39;092年
\ & # 39;
代表一个单引号(撇号)字符
039
\“
代表一个双引号字符
034
\ 0
空字符(NULL)
000
\ ddd
1到3位八进制数所代表的任意字符
三位八进制
\ xhh
1到2位十六进制所代表的任意字符
二位十六进制
<强> 3。解决方法强>
1。修改数据库配置,让数据库支持\作为转义字符
早期Postgresql普通字符串中的\是作为转义字符对待的,所以\ \最终会认为是\。但是这是不符合SQL标准的,所以在9.1 PG及以后,普通字符串中的\不会被任务是转义字符,而e # 39; xx \ x # 39;中的\才会被当作是转义字符。
为了使以前的代码可以在新的PG版本中运行,便有了standard_conforming_strings这个选项,这个选项默认是,表示按照SQL标准处理字符串,当设置为时,按照PG的旧版本处理字符串。运行下面命令,开启这个选项即可:
ALTER ROLE xx 拷贝DATABASE yy SET standard_conforming_strings 用;
2。用新版本支持的转义字符# 39;公司& # 39;或者e # 39; & # 39;将含有转义的字符串放在单引号里面
& # 39; \ \ & # 39;,或者,e # 39; \ \ & # 39;
<强>补充:PG特殊字符的转义强>
实例1
imo=#, select *,得到测试; ,name ------ ,重金属镉 ,ab ,_b_c (3,行) 国际海事组织=#,select *,得到test where name like & # 39; _b % & # 39;; ,name ------ ,ab ,_b_c (2,行) 国际海事组织=#,select *,得到test where name like & # 39; d_b % & # 39;, escape & # 39; d # 39;; ,name ------ ,_b_c (1,行) 国际海事组织=#,select *,得到test where name like & # 39; \ _b % & # 39;,; ,name ------ ,_b_c (1,行)
关于怎么在Postgresql数据库中转义字符就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。