standard_conforming_strings

控制是否按字面意思处理反斜杠的 GUC

standard_conforming_strings 是一个 配置参数,用于确定在字符串文字 ('...') 中是否按字面意思处理反斜杠(如 SQL 标准中所指定)。

standard_conforming_stringsPostgreSQL 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_stringson(自 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

分类

向后兼容性GUC 配置项字符串操作

另请参阅

escape_string_warningbackslash_quote

反馈

提交任何关于 "standard_conforming_strings" 的评论、建议或更正 此处