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;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;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;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.