standard_conforming_strings=on,\失去了转义的意思,即‘’中是什么就是什么,但是standard_conforming_strings=off时,\会保留转义的含义所以select '\'即为''
在Unicode转义语法中,反斜杠后的任何其他字符均按字面意义使用。因此,要包含反斜杠字符,请写两个反斜杠(\)。即想要表达‘\d’的含义,在sql文中要写‘ \d ’,仅在打开配置参数standard_conforming_strings时,字符串常量的Unicode转义语法才起作用。
如果standard_conforming_strings是off,则反斜杠是字符串文本中的转义字符
也可以使用E‘字符’
示例:
mydb=# select '\\'; ?column? ---------- \\ (1 row) mydb=# show standard_conforming_strings; standard_conforming_strings ----------------------------- on (1 row) mydb=# select '\'; ?column? ---------- \ (1 row) mydb=# set standard_conforming_strings=off; SET mydb=# show standard_conforming_strings; standard_conforming_strings ----------------------------- off (1 row) mydb=# select '\'; mydb'# mydb'# ; mydb'# ^C mydb=# ^C mydb=# select '\\'; WARNING: nonstandard use of \\ in a string literal LINE 1: select '\\'; ^ HINT: Use the escape string syntax for backslashes, e.g., E'\\'. ?column? ---------- \ (1 row) mydb=# select E'\\'; ?column? ---------- \ (1 row) mydb=# select E'\'; mydb'# ; mydb'# ; mydb'# ^C