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