sql >> Database >  >> RDS >> PostgreSQL

Queryresultaten retourneren als een door komma's gescheiden lijst in PostgreSQL

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.


  1. Mogelijk om Oracle Database-objecttypen binnen PL/SQL te maken?

  2. 8 Nieuwe Oracle-compatibiliteitsfuncties in EnterpriseDB PPAS 9.2 Beta

  3. Verschil tussen ON- en WHERE-clausules in SQL-tabeljoins

  4. Controleer niet-verzonden e-mail in SQL Server (T-SQL)