2017-02-28 40 views
2

函數json_object_keys(json)返回setof text。如何將這個setof text轉換爲一個字符串,所有元素用','分開?我必須使用函數array_to_string(),但它接受一個數組,而不是一個setof。那麼如何將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 

所以,我怎麼轉換SETOFARRAY

回答

3

函數json_object_keys()是一個設置返回函數,因此您應該將它用作行源(=在FROM子句中)。隨着string_agg()功能你再得到你的結果:

SELECT string_agg(cf, ',') INTO keys 
FROM json_object_keys(custom_fields) jok(cf); 

注意,在PL/pgSQL函數這隻能是因爲INTO條款。