PostgreSQL:将行输出为逗号分隔字符串列表
在PostgreSQL 11上,我想将表中的行作为逗号分隔的字符串列表输出:PostgreSQL:将行输出为逗号分隔字符串列表,sql,postgresql,Sql,Postgresql,在PostgreSQL 11上,我想将表中的行作为逗号分隔的字符串列表输出: id,info,name,message 我尝试了以下查询: SELECT array_to_string(array_agg(t), ',', '') FROM (
id,info,name,message
我尝试了以下查询:
SELECT array_to_string(array_agg(t), ',', '')
FROM (
SELECT id, info, name, message
FROM myschema.mytable
) t;
但这会产生:
(1,foo,bar,baz),(2,qux,zap,xen)
相反,期望的结果应该如下所示:
1,foo,bar,baz
2,qux,zap,xen
正确的查询是什么?我可以用以下函数解决它:
CREATE OR REPLACE FUNCTION myschema.get_foo()
RETURNS SETOF text AS $$
BEGIN
RETURN QUERY
SELECT COALESCE(array_to_string(array[id::text, info::text, name::text, message::text], ','), ''::text)
FROM myschema.mytable;
END;
$$ LANGUAGE plpgsql;
然后运行:
SELECT * FROM myschema.get_foo();
你似乎想要:
SELECT id, CONCAT_WS(',', info, name, message)
FROM myschema.mytable;
无需汇总。所需的值都在一行中
当然,您可以在字符串中包含id,而不是作为单独的列:
SELECT CONCAT_WS(',', id, info, name, message)
FROM myschema.mytable;