我如何coalesce
将null
列添加到空的JSONB
数组中?这不起作用:
SELECT jsonb_array_elements(coalesce(null_column, '{}'::jsonb))
FROM table
WHERE id = 13;
-- ERROR: cannot extract elements from an object
这两个都没有:
SELECT jsonb_array_elements(coalesce(null_column, '[]'::jsonb))
FROM table
WHERE id = 13;
-- ERROR: cannot extract elements from a scalar
答案 0 :(得分:3)
{}
是一个对象,但jsonb_array_elements
需要一个数组,因此请将{}
替换为[]
确保两个参数都返回一个jsonb数组。例如,如果您的列是整数,则可以使用concat
添加方括号和::jsonb
进行转换
SELECT jsonb_array_elements(coalesce(concat('[',my_column,']')::jsonb,'[]'::jsonb))
答案 1 :(得分:0)
以下是用于完成所需内容的SQL代码:
SELECT jsonb_array_elements(coalesce(null_column, '[{}]'::jsonb))
FROM table
WHERE id = 13;