Как прокомментировано в этом ответе,
SELECT (j->'i')::int FROM (SELECT '{"i":null}'::jsonb) t(j); -- fail
приводит к "ОШИБКЕ: не удается привести значение jsonb null к типу integer"... Хорошо, это "способ PostgreSQL", но почему бы не сделать его лучше? Лучше, чем добавить CASE
предложения, это делает "естественную" вещь, то есть приводит значение JSON-NULL к типизированному SQL нулевому значению. Итак, это не проблема реализации, но, похоже, ошибка спецификации в PostregSQL: так ли это?