json_strip_nulls() 是一个系统函数,用于从给定的 JSON 值中删除所有值为 null 的对象字段。
json_strip_nulls() 函数已在 PostgreSQL 9.5 中添加。
用法
PostgreSQL 18 及更高版本
json_strip_nulls (targetjson[,strip_in_arraysboolean] ) →json
PostgreSQL 17 及更早版本
json_strip_nulls (json) →json
删除操作将递归执行。非对象字段的 null 值不会被移除。
如果 strip_in_arrays PostgreSQL 18 及更高版本的值为 true(默认为 false),则数组中的 null 元素也会被移除。
变更历史
- PostgreSQL 18
- 添加了参数
strip_in_arrays(提交 4603903d)
- 添加了参数
- PostgreSQL 9.5
- 已添加 (commit 237a8824)
示例
json_strip_nulls() 的基本用法示例
postgres=# SELECT json_strip_nulls('[{"foo":1, "bar":null}]');
json_strip_nulls
------------------
[{"foo":1}]
(1 row)
移除是递归的
postgres=# SELECT json_strip_nulls($$
[{
"foo":
{
"bar":1,
"baz":null
}
}]
$$);
json_strip_nulls
---------------------
[{"foo":{"bar":1}}]
(1 row)
非对象字段的 null 值不会被移除
postgres=# SELECT json_strip_nulls('[1,null]');
json_strip_nulls
------------------
[1,null]
(1 row)
参考资料
- PostgreSQL 文档: JSON 处理函数
