PostgreSQL中string_agg和array_agg的区别是什么?

4

我认为当一个返回字符串类型而另一个返回数组类型时,string_aggarray_agg几乎相同。它们之间还有其他区别吗?

我应该更喜欢哪一个?第一个还是第二个?

array_agg(tag_name, ',') as Tag

或者

string_agg(tag_name, ',') as Tag

或者

array_to_string(array_agg(tag_name), ',') as Tag

有人能为我解释一下吗?1. array_agg 2. string_agg 3. array_to_string

2个回答

3

你的第一个表达式来自Postgres没有 string_agg() 的时代,如果你只想要一个字符串(文本)值,不应该使用它。

如果你想连接字符串值,使用现代Postgres版本中的 string_agg(tag_name, ',') 是首选方式。


当你想要一个字符串值时,使用 string_agg(),当你想要处理数组时,使用 array_agg()


抱歉,我已经编辑了问题,请再次查看。 - Suman Kumar Dash

1

在您编辑后的问题中,第一个会抛出错误,因此您不需要它。

第二个和第三个执行相同的操作,但第三个是毫无必要的缓慢和内存密集型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接