转载至:
postgresql字符转义
在PostgreSQL 9之前的版本中,可以直接使用反斜杠
\
进行转义;比如:\b表示退格, \n表示换行, \t表示水平制表符,\r标示回车,\f表示换页。除此之外还支持\digits和\xhexdigits,分别表示转义八进制和十六进制数据。
但是在PostgreSQL 9之后的版本,反斜杠已经变成了普通字符;如果想要使用反斜杠来转义字符,就必须在需要转义的字符串前面加上E(E就是Escape),如下:
select E'张\t小明';
对单引号的两种转义方式
在SQL标准中字符串是用单引号括起来的,而在PostgreSQL中遵守了该标准,双引号则是用来表示变量的,如果在字符串中需要使用到单引号,就需要对其进行转义。
方式一:使用E和反斜杠进行转义
select E'\'233';
方式二:直接用一个单引号来转义单引号
select '''233';
这两种方式都能得到
'233
的结果而不会报错,第二种方式比较简单,也可以通过修改
standard_conforming_strings
参数的值来让反斜杠从普通字符变回转义字符:
查询并修改该参数的值:
show standard_conforming_strings;
SET standard_conforming_strings = on;
SET standard_conforming_strings = off;
当该参数的值为off时就可以直接使用反斜杠作为转义字符里,如下:
select '\'233';
将会得到
'233
的结果而不会报错。
最近我在写
SQL
插入到
Postgresql
数据库中时候,遇到字符串中带有单引号,然后出错,就需要
转义
之后才能插入。如果字符串带单引号,就会
SQL
报错,所以需要
转义
才能插入。My
SQL
则有以下方式可以插入。
大部分的数据库以及编程语言中字符
转义
都是使用反斜杠"\", 在
postgresql
9之前的版本中,也是支持反斜杠
转义
的,
postgresql
9之前支持C语言风格的字符逃逸(
转义
)。
比如\b表示退格, \n表示换行, \t表示水平制表符,\r标示回车,\f表示进纸.除此之外还支持\digits和\xhexdigits,分别表示
转义
八进制和十六进制数据。
字符
转义
1. 现在的post...
今天碰到一个问题,就是
postgresql
中怎么在引号中定义变量,想了各种方法,也没有解决,下面是我找到的神似的内容。
在
PostgreSQL
9之前的版本中,可以直接使用反斜杠\进行
转义
;比如:\b表示退格, \n表示换行, \t表示水平制表符,\r标示回车,\f表示换页。除此之外还支持\digits和\xhexdigits,分别表示
转义
八进制和十六进制数据。
但是在Postgre...
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...
在每个数据库中 \ 默认都具有
转义
功能。而 在
postgresql
9以前 字符 \ 默认 具有
转义
功能,在
postgresql
9及以后 按照普通字符来处理有参数 standard_conforming_strings=on/off 控制on-表示\按照普通字符出来 不具有
转义
功能(
postgresql
9 及以上版本默认值)off-表示具有
转义
功能(
postgresql
9 ...
为了放弃阅读整个问题,我的基本问题是:
PostgreSQL
中是否有一个函数来
转义字符
串中的正则表达式字符?我已经探测过文档,但无法找到这样的功能.这是完整的问题:在
PostgreSQL
数据库中,我有一个包含唯一名称的列.我还有一个定期在此字段中插入名称的进程,并且为了防止重复,如果需要输入已存在的名称,它会在末尾附加一个空格和括号.即姓名,姓名(1),姓名(2),姓名(3)等就目前而言,我使用以下...
public static String specialCharacterEscape(String source) {
String result = null;
if (org.apache.commons.lang.StringUtils.isNotEmpty(source)) {
result = source.replace("%", "\\%").replace("_", "\\_");
return result;