Postgres合并为空JSONB数组

时间:2016-12-17 01:53:55

标签: sql arrays postgresql coalesce jsonb

我如何coalescenull列添加到空的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

2 个答案:

答案 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;