PostgreSQL参数array_nulls

array_nulls 参数用来控制数组类型 NULL 值的解析结果,如果一个不带引号的 NULL 作为数组类型的一个元素,在默认参数 array_nulls = on 的情况下,它将被识别为 NULL 空值,如果将该参数设置为 off,不带引号的 NULL 将被识别为字符串 "NULL"。

为什么要引入这个参数?因为在 PostgreSQL 8.2 版本之前是不支持在数组中存储 NULL 值的,所有 NULL 都会被认为是字符串 "NULL",后面的版本为了兼容之前的版本,引入了 array_nulls 参数,默认值为 ON,如果要保持与 8.2 之前的版本兼容,那么需要将该参数设置为 OFF。

  • 参数默认值:ON
  • 参数支持会话级修改

下面通过一个示例,演示该参数的功能:

array_nulls = on:

postgres=# show array_nulls;
 array_nulls
-------------
 on
(1 row)

postgres=# insert into t values('{NULL,NULL}');
INSERT 0 1
postgres=# select * from t;
     id
-------------
 {NULL,NULL}
(1 row)

array_nulls = off:

postgres=# set array_nulls=off;
SET
postgres=# insert into t values('{NULL,NULL}');
INSERT 0 1
postgres=# select * from t;
       id
-----------------
 {"NULL","NULL"}
(1 row)

文章评论

0条评论