In Postgres kunnen we de STRING_AGG()
. gebruiken functie om onze zoekopdrachtresultaten om te zetten in een door komma's gescheiden lijst.
In plaats van dat elke waarde in een aparte rij wordt uitgevoerd (zoals bij elke gewone zoekopdracht), worden de waarden uitgevoerd naar een enkele rij, gescheiden door een komma (of een ander scheidingsteken naar keuze).
Voorbeeld
Stel je voor dat we de volgende query uitvoeren:
SELECT *
FROM Genres;
Resultaat:
+---------+---------+ | genreid | genre | +---------+---------+ | 1 | Rock | | 2 | Jazz | | 3 | Country | | 4 | Pop | | 5 | Blues | | 6 | Hip Hop | | 7 | Rap | | 8 | Punk | +---------+---------+ (8 rows)
We kunnen de volgende query uitvoeren om het genre
uit te voeren kolom als een door komma's gescheiden lijst:
SELECT STRING_AGG(genre, ', ')
FROM Genres;
Resultaat:
+-----------------------------------------------------+ | string_agg | +-----------------------------------------------------+ | Rock, Jazz, Country, Pop, Blues, Hip Hop, Rap, Punk | +-----------------------------------------------------+ (1 row)
We kunnen zelfs de GenreId
kolom in onze lijst als we willen:
SELECT STRING_AGG(CONCAT(GenreId, ') ', Genre), ' ' ORDER BY GenreId ASC)
FROM Genres;
Resultaat:
1) Rock 2) Jazz 3) Country 4) Pop 5) Blues 6) Hip Hop 7) Rap 8) Punk
Hier gebruikte ik ook de ORDER BY
clausule binnen de STRING_AGG()
functie om de resultaten te sorteren op GenreId
in oplopende volgorde.
We kunnen ook dingen doen zoals dubbele bestanden verwijderen (met de DISTINCT
clausule), gebruik een ander scheidingsteken en gebruik de functie binnen een gegroepeerde zoekopdracht.
Zie STRING_AGG()
Functie in PostgreSQL voor voorbeelden.