PostgreSQL查询以逗号分隔列表的形式返回结果


Answers:


205

SELECT string_agg(id::text, ',') FROM table

需要PostgreSQL 9.0,但这不是问题。


刚刚发现这个有用。谢谢!
gooddadmike 2013年

47
请注意,至少对我来说,string_agg不喜欢服用int作为其第一个参数,所以我不喜欢的东西:string_agg(CAST(id as varchar), ',')不是。
JZC

17
@JZC,甚至更轻松:string_agg(id::text, ',')
Alphaaa

6
如果您想对色谱柱进行排序select string_agg(id, ', ' order by id desc) from table
MA Hossain Tonu,

1
我在查询中遇到了重复项,但是用STRING_AGG(DISTINCT customer_name, ',')
ChristoKiwi

51

您可以使用array()和array_to_string()函数获取查询。与SELECT array( SELECT id FROM table );您一起将得到类似以下结果:{1,2,3,4,5,6}

然后,如果要删除{}符号,则可以使用array_to_string()函数并使用逗号作为分隔符,因此:SELECT array_to_string( array( SELECT id FROM table ), ',' )将得到类似1,2,3,4,5,6的结果


1
SELECT array_to_string( id, ',' ) AS id FROM table
亚历克斯R.17年



-1
SELECT array_agg(id, ',') FROM table

{1,2,3,4}

我正在使用Postgres 11,而EntityFramework将其作为整数数组进行获取。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.