2

我有一个带有 JSONB 列的 postgres 9.6 表

> SELECT id, data FROM my_table ORDER BY id LIMIT 4;

 id |               data    
----+---------------------------------------
  1 | {"a": [1, 7], "b": null, "c": [8]}
  2 | {"a": [2, 9], "b": [1], "c": null}
  3 | {"a": [8, 9], "b": null, "c": [3, 4]}
  4 | {}

如您所见,一些 JSON 键具有null值。

我想排除这些 - 有没有一种简单的方法可以SELECT只生成非null键值对:

 id |               data    
----+---------------------------------------
  1 | {"a": [1, 7], "c": [8]}
  2 | {"a": [2, 9], "b": [1]}
  3 | {"a": [8, 9], "c": [3, 4]}
  4 | {}

谢谢!

4

1 回答 1

2

您可以使用jsonb_strip_nulls()

select id, jsonb_strip_nulls(data) as data
from my_table;

在线示例:http ://rextester.com/GGJRW83576

请注意,此函数不会删除null数组内的值。

于 2018-06-13T14:02:28.173 回答