Функция jsonb_each Возвращает нулевые значения. - PullRequest
1 голос
/ 29 февраля 2020

Позвольте мне объяснить:

[1] [без ошибок]

SELECT (('{"a": null}'::JSONB)->>'a')::INT;

[2] [здесь ошибка]

SELECT (t.value::TEXT)::INT FROM jsonb_each(('{"a": null}'::JSONB)) AS t
  • Я должен использовать функцию jsonb_each.

  • Как я могу заставить SQL число 2 вернуть ноль?

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

В первом примере вы используете ->>, который возвращает значение как тип данных text. Эквивалентная «для каждой» функции - jsonb_each_text(), которая также возвращает значение как text. jsonb_each возвращает каждое значение в виде значения JSONB

SELECT t.value::INT 
FROM jsonb_each_text(('{"a": null}'::JSONB)) AS t
1 голос
/ 29 февраля 2020

Вы можете сделать это, например:

SELECT nullif(t.value::text,'null')::int
FROM jsonb_each(('{"a": null}'::JSONB)) AS t

С уважением,
Bjarni

...