backslash_quote
是一个 配置参数,用于确定在字符串字面量中是否可以使用 \'
来表示单引号。
backslash_quote
在 PostgreSQL 8.2 中被添加。
默认
backslash_quote
的默认值为:safe_encoding
。
用法
在标准的 SQL 中,字符串字面量中的单引号('
)通过将其加倍(''
)来表示,例如:
SELECT 'hello ''world''!'
然而,PostgreSQL 历史上也接受反斜杠转义的形式(\'
),例如:
SELECT 'hello \'world\'!'
这在某些客户端字符集编码下可能存在潜在的安全漏洞。
backslash_quote
可以设置为以下值之一:
on
表示在所有情况下都接受 \'
。
off
则禁止使用 \'
,如果检测到它,将引发一个 ERROR
。
safe_encoding
(默认值)表示仅当客户端编码不允许在多字节字符内包含 ASCII \
时,才接受 \'
。
请注意,backslash_quote
仅在以下情况下生效:
按 PostgreSQL 版本详细信息
backslash_quote (PostgreSQL 19)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 18)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 17)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 16)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 15)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 14)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 13)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 12)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 11)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 10)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 9.6)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 9.5)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:backslash_quote
backslash_quote (PostgreSQL 9.4)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
文档:backslash_quote
backslash_quote (PostgreSQL 9.3)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
文档:backslash_quote
backslash_quote (PostgreSQL 9.2)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
文档:backslash_quote
backslash_quote (PostgreSQL 9.1)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
文档:backslash_quote
backslash_quote (PostgreSQL 9.0)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
文档:backslash_quote
backslash_quote (PostgreSQL 8.4)
设置 |
safe_encoding |
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
enum |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
safe_encoding, on, off |
启动值 |
safe_encoding |
重置值 |
safe_encoding |
源文件 |
|
源行 |
|
文档:backslash_quote
backslash_quote (PostgreSQL 8.3)
设置 |
|
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
有效值为 ON、OFF 和 SAFE_ENCODING。 |
上下文 |
user |
变量类型 |
string |
来源 |
默认 |
最小值 |
|
最大值 |
|
文档:backslash_quote
backslash_quote (PostgreSQL 8.2)
设置 |
|
单位 |
|
类别 |
版本和平台兼容性 / 之前的 PostgreSQL 版本 |
简短描述 |
设置是否允许在字符串字面量中使用 "\'"。 |
扩展描述 |
有效值为 ON、OFF 和 SAFE_ENCODING。 |
上下文 |
user |
变量类型 |
string |
来源 |
默认 |
最小值 |
|
最大值 |
|
文档:backslash_quote
变更历史
示例
backslash_quote
的基本用法示例
postgres=# SHOW backslash_quote;
backslash_quote
-----------------
safe_encoding
(1 row)
postgres=# SELECT E'hello \'world\'!';
?column?
----------------
hello 'world'!
(1 row)
postgres=# SET backslash_quote TO off;
SET
postgres=# SELECT E'hello \'world\'!';
ERROR: unsafe use of \' in a string literal
LINE 1: SELECT E'hello \'world\'!';
^
HINT: Use '' to write quotes in strings. \' is insecure in client-only encodings.