jsonb_strip_nulls()
是一个系统函数,用于从给定的 JSONB
值中删除所有值为 null
的对象字段。
jsonb_strip_nulls()
函数在 PostgreSQL 9.5 中被添加。
用法
PostgreSQL 18 及更高版本
jsonb_strip_nulls (target
jsonb
[,strip_in_arrays
boolean
] ) →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 处理函数