Einige RDBMSs haben einen GROUP_CONCAT()
Funktion, mit der Sie eine Abfragespalte als eine durch Trennzeichen getrennte Liste zurückgeben können (z. B. eine durch Kommas getrennte Liste). MySQL und MariaDB sind zwei, die eine solche Funktion haben.
PostgreSQL und SQL Server haben ähnliche Funktionen namens STRING_AGG()
.
Oracle hingegen hat die LISTAGG()
Funktion, die so ziemlich dasselbe macht (und vielleicht noch mehr).
Man könnte also sagen, dass LISTAGG()
ist Oracles GROUP_CONCAT()
Äquivalent.
Beispiel
Hier ist ein einfaches Beispiel, um zu demonstrieren, wie Oracles LISTAGG()
Funktion funktioniert:
SELECT LISTAGG(region_name, ',')
FROM regions;
Ergebnis:
LISTAGG(REGION_NAME,',') ______________________________________________ Europe,Americas,Asia,Middle East and Africa
In diesem Fall habe ich angegeben, dass das Trennzeichen ein Komma ist.
Folgendes passiert, wenn wir die Abfrage einfach ohne LISTAGG()
ausführen Funktion:
SELECT region_name
FROM regions;
Ergebnis:
REGION_NAME _________________________ Europe Americas Asia Middle East and Africa
Wir erhalten vier Zeilen, jede mit einem separaten Wert, anstatt einer kommagetrennten Zeile, die alle Werte enthält.
Die LISTAGG()
Funktion ermöglicht es uns auch, die Ergebnisse zu ordnen, nur eindeutige Werte zurückzugeben (über die DISTINCT
Klausel) und mehr.
Siehe LISTAGG()
Funktion in Oracle für weitere Beispiele.