SQL Academy
Premium
Funktionsreferenz

STRING_AGG

Entsprechung in MySQL:

Verbindet die Werte einer Gruppe von Zeilen zu einem String mit Trennzeichen.

PostgreSQL 17.5
STRING_AGG([DISTINCT] expression, delimiter [ORDER BY ...])

Parameter

DISTINCTSchlüsselwortoptional
Nur eindeutige Werte verbinden
expressiontext
String-Ausdruck, dessen Werte verbunden werden; eine Zahl muss in Text umgewandelt werden
delimitertext
Trennzeichen zwischen den Werten
ORDER BYoptional
Reihenfolge der Werte im String, steht ohne Komma nach delimiter

Rückgabewert

String (text); NULL-Werte werden übersprungen, NULL, wenn alle Werte NULL sind

Beispiele

Alle Namen mit Komma getrennt

PostgreSQL 17.5
SELECT STRING_AGG(member_name, ', ')
FROM FamilyMembers;
string_agg
Headley Quincey, Flavia Quincey, Andie Quincey, Lela Quincey, Annie Quincey, Ernest Forrest, Constance Forrest, Wednesday Addams

Namen nach Status alphabetisch

PostgreSQL 17.5
SELECT status,
	STRING_AGG(
		member_name,
		', '
		ORDER BY member_name
	) AS members
FROM FamilyMembers
GROUP BY status
ORDER BY status;
statusmembers
daughterAnnie Quincey, Lela Quincey, Wednesday Addams
fatherErnest Forrest, Headley Quincey
motherConstance Forrest, Flavia Quincey
sonAndie Quincey

Zahlen über ::text und eindeutige Status

PostgreSQL 17.5
SELECT STRING_AGG(
		member_id::text,
		','
		ORDER BY member_id
	) AS ids,
	STRING_AGG(DISTINCT status, ', ') AS statuses
FROM FamilyMembers;
idsstatuses
1,2,3,4,5,6,7,8daughter, father, mother, son

Details

Die Werte müssen Text sein: STRING_AGG(member_id, ',') führt zu einem Fehler, STRING_AGG(member_id::text, ',') funktioniert.

Ohne ORDER BY ist die Reihenfolge der Werte nicht garantiert und kann sich von Lauf zu Lauf ändern. Zusammen mit DISTINCT darf ORDER BY nur expression selbst verwenden.

Siehe auch