为什么我不能在Postgres中聚合setof jsonb?

时间:2019-05-31 09:26:21

标签: json postgresql aggregate postgres-9.6

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

0 个答案:

没有答案