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.