将SETOF转换为字符串

时间:2017-02-28 00:58:59

标签: postgresql plpgsql

函数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

1 个答案:

答案 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函数。