Postgres文档声明:
虽然指定字符串常量的标准语法通常很方便,但当所需的字符串包含许多单引号或反斜杠时,可能很难理解,因为每个字符串都必须加倍。
我理解单引号是如何加倍的,因为字符串常量上的第4.1.2.1节就是这样转义的。但如果反斜杠翻了一番,这肯定是不可能的:
janus=> \d todo
Table "public.todo"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+----------------------------------
id | integer | | not null | nextval('todo_id_seq'::regclass)
descr | text | | |
done | boolean | | |
janus=> truncate table todo;
TRUNCATE TABLE
janus=> insert into todo (descr,done) values ('\''', false);
INSERT 0 1
janus=> select length(descr), descr from todo;
length | descr
--------+-------
2 | \'
(1 row)如您所见,两个单引号(被解释为一个单引号)前面的反斜杠没有作用,而是按字面插入。那么,如何引用与反斜杠交互的引号中引用的“标准”语法呢?他们似乎没有任何特殊的待遇,他们就像任何其他的性格。
发布于 2023-04-11 07:56:53
您引用的文档是9.1版本之前的遗留文档,而在默认情况下,standard_conforming_strings是off。从9.1开始,这已经过时了,而我已经提出了一个补丁则将其删除。
https://dba.stackexchange.com/questions/325850
复制相似问题