我正在尝试将jsonb
列转换为字符串,但是在使用jsonb_array_elements
之后,我找不到任何可以对setof jsonb
有用的函数。
SELECT string_agg( jsonb_array_elements(col), ':' )
FROM test_json_array
WHERE id = 1;
结尾:
ERROR: function string_agg(jsonb, unknown) does not exist
LINE 1: SELECT string_agg( jsonb_array_elements(col), ':' ) FROM tes...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
使用ARRAY构造函数或array_agg
会出现另一个错误:
$ SELECT ARRAY[ jsonb_array_elements(col) ] FROM test_json_array WHERE id = 1;
ERROR: set-valued function called in context that cannot accept a set
$ SELECT array_agg( jsonb_array_elements(col)) FROM test_json_array WHERE id = 1;
ERROR: set-valued function called in context that cannot accept a set
我在FROM
子句中搜索了所有结尾的jsonb-part,例如:
SELECT string_agg( j.x, ':' )
FROM test_json_array tbl, jsonb_array_elements_text(tbl.col) AS j(x)
WHERE tbl.id = 1;
我想在SELECT
子句中进行这样的汇总,但是我不明白,为什么不可能呢?是吗?
使用Postgres 9.6