1

我正在尝试将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

4

0 回答 0