array_nulls 是一个向后兼容的 配置参数,它决定在指定包含 数组 元素时,是否识别未加引号的 NULL 值。
array_nulls 在 PostgreSQL 8.2 中被添加。
默认值
array_nulls 的默认值为:on。
用法
从 PostgreSQL 8.2 开始,数组元素可以指定为 NULL 值,例如:
postgres=# SELECT '{"foo",NULL,"bar"}'::TEXT[];
text
----------------
{foo,NULL,bar}
(1 row)
在 PostgreSQL 8.1 及更早版本中,字符串中的 NULL 字面量被解析为字符串字面量,例如:
postgres=# SELECT '{"foo",NULL,"bar"}'::TEXT[];
text
------------------
{foo,"NULL",bar}
(1 row)
array_nulls 启用 PostgreSQL 8.2 之前的行为,以防旧应用程序需要兼容。
请注意,这不会影响使用 ARRAY[] 构造函数指定的 NULL 值。
按 PostgreSQL 版本详细信息
array_nulls (PostgreSQL 19)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 18)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 17)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 16)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 15)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 14)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 13)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 12)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 11)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 10)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 9.6)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 9.5)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档:array_nulls
array_nulls (PostgreSQL 9.4)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:array_nulls
array_nulls (PostgreSQL 9.3)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:array_nulls
array_nulls (PostgreSQL 9.2)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:array_nulls
array_nulls (PostgreSQL 9.1)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:array_nulls
array_nulls (PostgreSQL 9.0)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:array_nulls
array_nulls (PostgreSQL 8.4)
| 设置 | 开启 |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档:array_nulls
array_nulls (PostgreSQL 8.3)
| 设置 | |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 |
文档:array_nulls
array_nulls (PostgreSQL 8.2)
| 设置 | |
| 单位 | |
| 类别 | 版本和平台兼容性 / 之前的 PostgreSQL 版本 |
| 简短描述 | 允许在数组输入中包含 NULL 元素。 |
| 扩展描述 | 当开启时,数组输入值中的未加引号的 NULL 表示空值;否则,它被视为字面量。 |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 |
文档:array_nulls
变更历史
- PostgreSQL 8.2
- 已添加(提交 cecb6075)
示例
演示 array_nulls 效果的示例
postgres=# CREATE TABLE foo (val text[]);
CREATE TABLE
postgres=# SHOW array_nulls;
array_nulls
-------------
on
(1 row)
postgres=# INSERT INTO foo VALUES('{"foo",NULL,"bar"}');
INSERT 0 1
postgres=# SET array_nulls TO off;
SET
postgres=# INSERT INTO foo VALUES('{"foo",NULL,"bar"}');
INSERT 0 1
postgres=# SELECT val[2] IS NULL FROM foo;
?column?
----------
t
f
(2 rows)
参考资料
- PostgreSQL 文档: array_nulls
