我正在尝试将jsonb
-column 转换为字符串,但是在使用后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-constructor 或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
我在 -clause 中搜索结束的 jsonb-part 时发现的所有内容FROM
,例如:
SELECT string_agg( j.x, ':' )
FROM test_json_array tbl, jsonb_array_elements_text(tbl.col) AS j(x)
WHERE tbl.id = 1;
我想在SELECT
-clause 中有这样的聚合,但我不明白,为什么这是不可能的?或者是吗?
使用 Postgres 9.6