Выбор только ненулевых ключей в поле Postgres JSONB - PullRequest
0 голосов
/ 13 июня 2018

У меня есть таблица postgres 9.6 со столбцом JSONB

> 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 только для не-1008 * пар ключ-значение для получения:

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

Спасибо!

1 Ответ

0 голосов
/ 13 июня 2018

Вы можете использовать jsonb_strip_nulls()

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

Онлайн пример: http://rextester.com/GGJRW83576

Обратите внимание, что эта функция не будет удалять значения null внутри массивов.

...