standard_conforming_strings
是一个 配置参数,用于确定在字符串文字 ('...'
) 中是否按字面意思处理反斜杠(如 SQL 标准中所指定)。
standard_conforming_strings
在 PostgreSQL 8.1 中添加。
默认值
standard_conforming_strings
的默认值为:on
。
用法
在 PostgreSQL 8.1 之前,字符串文字中的反斜杠始终被解释为引入转义序列,例如 '\n
'(换行符),这与 SQL 标准不符。
在 PostgreSQL 8.1 中,引入了 E''
语法以显式表示应处理转义序列的字符串文字。
从 PostgreSQL 9.1 开始,standard_conforming_strings
默认设置为 on
,但可以设置为 off
以恢复 PostgreSQL 8.1 之前的默认行为。但是,不建议这样做,并且除非显式禁用,否则每次处理包含转义序列的字符串文字时都会发出 WARNING
(请参见下面的示例)。
psql
请注意,在 psql 中,只有当 standard_conforming_strings
设置为 off
时,才能使用单引号的转义形式 (\'
),否则 psql 将无法正确解析字符串文字(请参见下面的示例)。
按 PostgreSQL 版本详细说明
standard_conforming_strings (PostgreSQL 17)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 16)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 15)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 14)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 13)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 12)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 11)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 10)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 9.6)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 9.5)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
挂起重启 |
false |
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 9.4)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 9.3)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 9.2)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 9.1)
设置 |
on |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
on |
重置值 |
on |
源文件 |
|
源代码行 |
|
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 9.0)
设置 |
off |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 8.4)
设置 |
off |
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
枚举值 |
|
引导值 |
off |
重置值 |
off |
源文件 |
|
源代码行 |
|
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 8.3)
设置 |
|
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
导致 '...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
文档: standard_conforming_strings
standard_conforming_strings (PostgreSQL 8.2)
设置 |
|
单位 |
|
类别 |
版本和平台兼容性/以前的 PostgreSQL 版本 |
short_desc |
'...' 字符串按字面意思处理反斜杠。 |
extra_desc |
|
上下文 |
用户 |
vartype |
bool |
来源 |
默认值 |
最小值 |
|
最大值 |
|
文档: standard_conforming_strings
更改历史记录
示例
当 standard_conforming_strings
为 on
(自 PostgreSQL 9.1 以来的默认值)时的用法示例 - 此处 '\n
' 字符序列按字面意思解释
postgres=# SELECT 'hello \nworld';
?column?
---------------
hello \nworld
(1 row)
将 standard_conforming_strings
设置为 off
时,'\n
' 字符序列被视为换行符转义序列
postgres=# SELECT 'hello \nworld';
WARNING: nonstandard use of escape in a string literal
LINE 1: SELECT 'hello \nworld';
^
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
?column?
----------
hello +
world
(1 row)
请注意,可以通过将 escape_string_warning
设置为 off
来禁用 WARNING
postgres=# SET escape_string_warning TO off;
SET
postgres=# SELECT 'hello \nworld';
?column?
----------
hello +
world
(1 row)
psql 只能在 standard_conforming_strings
设置为 off
时解析转义的单引号 (\')。
postgres=# SELECT 'hello \'world\'';
invalid command \'';
Try \? for help.
^C
postgres=# SET standard_conforming_strings TO off;
SET
postgres=# SELECT 'hello \'world\'';
WARNING: nonstandard use of \' in a string literal
LINE 1: SELECT 'hello \'world\'';
^
HINT: Use '' to write quotes in strings, or use the escape string syntax (E'...').
?column?
---------------
hello 'world'
(1 row)
有关上述警告的更多详细信息,请参阅 backslash_quote
。