Разница между string_agg и array_agg в PostgreSQL? - PullRequest
0 голосов
/ 16 апреля 2020

Я думаю, string_agg против array_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 ]

1 голос
/ 16 апреля 2020

В вашем послередактированном вопросе первый выдает ОШИБКУ, так что вы этого не хотите.

2-й и 3-й делают то же самое, но 3-й излишне медленный и требует много памяти.

1 голос
/ 16 апреля 2020

Ваше первое выражение относится к эпохе, когда Postgres не имела string_agg() и не должна использоваться, если вы просто хотите получить строковое (текстовое) значение.

Использование string_agg(tag_name, ',') является предпочтительным способом для современных Postgres версий, если вы хотите объединить строковые значения.


Вы используете string_agg(), когда хотите получить строковое значение, и array_agg() когда вы хотите работать с массивом.

...