STRING_AGG
Entsprechung in MySQL:
Verbindet die Werte einer Gruppe von Zeilen zu einem String mit Trennzeichen.
PostgreSQL 17.9
STRING_AGG([DISTINCT] expression, delimiter [ORDER BY sort_expression [ASC | DESC] [NULLS FIRST | NULLS LAST]])- [ ]optionaler Teil
- a | beine der Optionen
- DISTINCT
- Nur eindeutige Werte verbindenSchlüsselwortOptional
- expression
- String-Ausdruck, dessen Werte verbunden werden; eine Zahl muss in Text umgewandelt werdentext
- delimiter
- Trennzeichen zwischen den Wertentext
- ORDER BY sort_expression [ASC | DESC] [NULLS FIRST | NULLS LAST]
- Reihenfolge der Werte, ohne sie beliebigOptional
- sort_expression
- Spalte oder Ausdruck, nach dem sortiert wird
- ASC | DESC
- Richtung, standardmäßig ASCSchlüsselwortOptionalASCDESC
- NULLS FIRST | NULLS LAST
- Position von NULL, standardmäßig am Ende bei ASC und am Anfang bei DESCSchlüsselwortOptionalNULLS FIRSTNULLS LAST
Rückgabewert
String (text); NULL-Werte werden übersprungen, NULL, wenn alle Werte NULL sind
Beispiele
Alle Namen mit Komma getrennt
PostgreSQL 17.9
SELECT STRING_AGG(member_name, ', ')
FROM FamilyMembers;Namen nach Status alphabetisch
PostgreSQL 17.9
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.9
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.
Zusammen mit DISTINCT muss sort_expression mit expression übereinstimmen.