替代array_agg()吗? [英] Alternatives to array_agg()?
问题描述
PostgreSQL的 array_agg()
函数是否可以替代,因此它不返回以下格式的值:'{x,y,z, }'。
我可以让它返回:'x,y,z'吗?
Is there any alternative to the PostgreSQL array_agg()
function so that it doesn't return values in the format: '{x,y,z,}'.
Can I have it return just: 'x,y,z' ?
推荐答案
在 PostgreSQL 9.0 或更高版本中,使用 string_agg(val,',')
。
它返回一个带有您选择的定界符的字符串。
In PostgreSQL 9.0 or later use string_agg(val, ',')
.
It returns a string with delimiters of your choosing.
array_agg(val)
返回一个 array ,这并不奇怪。您看到的花括号是 数组文字 -数组的文本表示形式。
array_agg(val)
returns an array, no surprise there. The curly braces you see are integral part of array literals - the text representation of arrays.
在较旧版本(或任何实际版本)中,您可以替换为 array_to_string(array_agg(val), ',')
。
In older versions (or any version really) you can substitute with array_to_string(array_agg(val), ',')
.
或者,快速'n'dirty: trim(array_agg(val):: text ,'{}'
-如果值从不以大括号开头或结尾。
Or, quick'n'dirty: trim(array_agg(val)::text, '{}'
- if values never start or end with curly braces.
这篇关于替代array_agg()吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!