De meeste van de belangrijkste RDBMS'en hebben een functie waarmee we onze zoekopdrachtresultaten kunnen retourneren als een door komma's gescheiden lijst.
Dat wil zeggen, we kunnen een dergelijke functie gebruiken om elke rij om te zetten in een afzonderlijk lijstitem, binnen een door komma's gescheiden lijst.
Hieronder staan voorbeelden van hoe u dit kunt bereiken in enkele van de meer populaire RDBMS'en.
MySQL
MySQL heeft de GROUP_CONCAT()
functie waarmee we onze zoekopdrachtresultaten in een door komma's gescheiden lijst kunnen weergeven:
SELECT GROUP_CONCAT(PetName)
FROM Pets;
Resultaat:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow
We kunnen ook dingen doen zoals dubbele waarden verwijderen (met de DISTINCT
clausule), specificeer een volgorde voor de resultaten (met de ORDER BY
clausule), en geef een ander scheidingsteken op.
Zie GROUP_CONCAT()
Functie in MySQL voor meer voorbeelden.
Oracle-database
Oracle Database heeft de LISTAGG()
functie:
SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';
Resultaat:
Hunold, Ernst, Austin, Pataballa, Lorentz
Net als MySQL stelt Oracle Database ons ook in staat dubbele waarden te verwijderen, een volgorde voor de resultaten op te geven, een ander scheidingsteken op te geven, enz.
Zie LISTAGG()
Functie in Oracle voor meer voorbeelden.
SQL-server
SQL Server heeft de STRING_AGG()
functie om onze resultaten terug te geven in een door komma's gescheiden lijst:
SELECT STRING_AGG(Genre, ',') AS Result FROM Genres
Resultaat:
Rock,Jazz,Country,Pop,Blues,Hip Hop,Rap,Punk
We kunnen ook dubbele waarden verwijderen, een volgorde voor de resultaten specificeren, het scheidingsteken wijzigen, enz.
Zie Queryresultaten retourneren als een door komma's gescheiden lijst in SQL Server voor meer voorbeelden.
MariaDB
Net als MySQL heeft MariaDB ook een GROUP_CONCAT()
functie:
SELECT GROUP_CONCAT(PetName)
FROM Pets;
Resultaat:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow
Net als de gelijknamige functie van MySQL, kunnen we ook dingen doen als dubbele waarden verwijderen (met de DISTINCT
clausule), specificeer een volgorde voor de resultaten (met de ORDER BY
clausule), wijzig het scheidingsteken, enz.
Een ding dat MariaDB echter boven MySQL heeft, is de LIMIT
clausule, die ons de mogelijkheid geeft om het aantal resultaten in de lijst te beperken.
Zie MariaDB GROUP_CONCAT()
voor meer voorbeelden.
PostgreSQL
Postgres heeft de STRING_AGG()
functie:
SELECT STRING_AGG(PetName, ',')
FROM Pets;
Resultaat:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow
We kunnen ook dubbele waarden verwijderen (met de DISTINCT
clausule), specificeer een volgorde voor de resultaten (met de ORDER BY
clausule), verander het scheidingsteken, enz.
Zie STRING_AGG()
Functie in PostgreSQL voor meer voorbeelden.
SQLite
In SQLite kunnen we de GROUP_CONCAT()
. gebruiken functie om onze zoekopdrachtresultaten om te zetten in een door komma's gescheiden lijst:
SELECT group_concat(FirstName)
FROM Employee;
Resultaat:
Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura
Zie hoe GROUP_CONCAT()
Werkt in SQLite voor meer voorbeelden.
Meerdere kolommen
De bovenstaande voorbeelden gebruiken allemaal een enkele kolom voor de lijst. We kunnen ook meerdere kolommen samenvoegen om een lijst te maken die meerdere kolommen bevat.
Stel dat we een tabel hebben met de volgende gegevens:
SELECT TaskId, TaskName
FROM Tasks;
Resultaat:
TaskId TaskName ------ ------------ 1 Feed cats 2 Water dog 3 Feed garden 4 Paint carpet 5 Clean roof 6 Feed cats
In SQL Server kunnen we het volgende doen om beide kolommen in een enkele rij uit te voeren:
SELECT STRING_AGG(CONCAT(TaskId, ') ', TaskName), ' ')
FROM Tasks
Resultaat:
1) Feed cats 2) Water dog 3) Feed garden 4) Paint carpet 5) Clean roof 6) Feed cats