是否有PostgreSQL array_agg()
函数的替代方法,以便它不会以以下格式返回值:&#39; {x,y,z,}&#39; < / em>的。
我可以让它返回:&#39; x,y,z&#39; ?
答案 0 :(得分:7)
在 PostgreSQL 9.0 或以后使用string_agg(val, ',')
它返回一个包含您选择的分隔符的字符串。
array_agg(val)
会返回数组,这并不奇怪。你看到的花括号是array literals的不可分割的一部分 - 数组的文本表示。
在旧版本(或任何版本)中,您可以使用array_to_string(array_agg(val), ',')
替代。
或者,quick'n'dirty:trim(array_agg(val)::text, '{}'
- 如果值永远不会以花括号开头或结尾。
答案 1 :(得分:4)
如果您尚未使用9.0(已提及string_agg()
功能),则可以array_to_string()
array_agg()
答案 2 :(得分:2)
使用STRING_AGG功能:
SELECT
STRING_AGG(name, ',')
FROM
person;