函数json_object_keys(json)
返回setof text
。如何将此setof text
转换为字符串,其中所有元素均以','
分隔?我必须使用函数array_to_string()
但它接受一个数组,而不是setof
。那么如何将setof
转换为数组呢?例如:
DECLARE
custom_fields json;
BEGIN
custom_fields:='{"name":"John Smith","age":23}';
keys:=array_to_string(json_object_keys(custom_fields),','::text);
END
以上不起作用,我得到了:
ERROR: function array_to_string(text, text) does not exist
那么,如何将SETOF
转换为ARRAY
?
答案 0 :(得分:3)
函数json_object_keys()
是一个set-returns函数,因此你应该将它用作行源(= FROM
子句中的=)。使用string_agg()
功能,您可以获得结果:
SELECT string_agg(cf, ',') INTO keys
FROM json_object_keys(custom_fields) jok(cf);
请注意,由于INTO
子句,这仅适用于PL / pgSQL函数。