array_agg()的替代方案?

时间:2012-03-01 22:12:25

标签: arrays postgresql aggregate-functions

是否有PostgreSQL array_agg()函数的替代方法,以便它不会以以下格式返回值:&#39; {x,y,z,}&#39; < / em>的。
我可以让它返回:&#39; x,y,z&#39;

3 个答案:

答案 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;