SQLite ha un group_concat()
funzione che consente di concatenare più risultati restituiti per una colonna in uno.
Questo è talvolta indicato come "aggregazione di stringhe".
Ad esempio, quando si esegue una query su un database, invece di avere l'output del valore di ciascuna colonna in una nuova riga, è possibile utilizzare group_concat()
per farli uscire come un elenco separato da virgole.
Sintassi
Puoi utilizzare questa funzione in uno dei seguenti modi:
group_concat(X)
group_concat(X,Y)
In altre parole, il group_concat()
La funzione può essere utilizzata con uno o due argomenti.
Il secondo argomento specifica un carattere da utilizzare come separatore. Se non lo specifichi, una virgola (,
) verrà utilizzato come separatore.
Esempio con un argomento
Ecco un esempio di chiamata a group_concat()
con un argomento.
SELECT group_concat(FirstName)
FROM Employee;
Risultato:
Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura
Se non ho usato group_concat()
per concatenare questa colonna, i risultati sarebbero stati così:
SELECT FirstName
FROM Employee;
Risultato:
Andrew Nancy Jane Margaret Steve Michael Robert Laura
Usa un separatore personalizzato
Come accennato, hai la possibilità di specificare quale carattere utilizzare come separatore.
Ecco un esempio di specifica del simbolo pipe (|
) come separatore.
SELECT group_concat(FirstName, '|')
FROM Employee;
Risultato:
Andrew|Nancy|Jane|Margaret|Steve|Michael|Robert|Laura
Eccone un altro che usa una virgola, ma aggiunge anche uno spazio a destra della virgola.
SELECT group_concat(FirstName, ', ')
FROM Employee;
Risultato:
Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura
Raggruppa i risultati
Puoi restituire più colonne e utilizzare il GROUP BY
clausola per raggrupparli in modo appropriato.
Ecco un esempio.
SELECT ArtistId, group_concat(AlbumName)
FROM Albums
GROUP BY ArtistId LIMIT 10;
Risultato:
ArtistId group_concat(AlbumName)
-------- --------------------------------------------------------------------------
1 Powerslave,Somewhere in Time,Piece of Mind,Killers,No Prayer for the Dying
2 Powerage
3 All Night Wrong,The Sixteen Men of Tain
4 Big Swing Face
5 Ziltoid the Omniscient,Casualties of Cool,Epicloud
6 Singing Down the Lane
7 Long Lost Suitcase,Praise and Blame,Along Came Jones
9 No Sound Without Silence
12 Blue Night,Eternity,Scandinavia