Nogle RDBMS'er har en GROUP_CONCAT()
funktion, der giver dig mulighed for at returnere en forespørgselskolonne som en afgrænset liste (f.eks. en kommasepareret liste). MySQL og MariaDB er to, der har sådan en funktion.
PostgreSQL og SQL Server har lignende funktioner kaldet STRING_AGG()
.
Oracle har på den anden side LISTAGG()
funktion, der stort set gør det samme (og måske mere).
Så du kan sige, at LISTAGG()
er Oracles GROUP_CONCAT()
tilsvarende.
Eksempel
Her er et grundlæggende eksempel for at demonstrere, hvordan Oracles LISTAGG()
funktion virker:
SELECT LISTAGG(region_name, ',')
FROM regions;
Resultat:
LISTAGG(REGION_NAME,',') ______________________________________________ Europe,Americas,Asia,Middle East and Africa
I dette tilfælde specificerede jeg, at separatoren er et komma.
Her er, hvad der sker, når vi bare laver forespørgslen uden LISTAGG()
funktion:
SELECT region_name
FROM regions;
Resultat:
REGION_NAME _________________________ Europe Americas Asia Middle East and Africa
Vi får fire rækker, hver med en separat værdi, i stedet for en kommasepareret række, der indeholder alle værdier.
LISTAGG()
Funktionen gør det også muligt for os at bestille resultaterne, kun returnere unikke værdier (via DISTINCT
klausul) og mere.
Se LISTAGG()
Funktion i Oracle for flere eksempler.