SQLite a un group_concat()
fonction qui vous permet de concaténer plusieurs résultats renvoyés pour une colonne en un seul.
Ceci est parfois appelé "agrégation de chaînes".
Par exemple, lorsque vous interrogez une base de données, au lieu d'avoir la valeur de chaque colonne en sortie dans une nouvelle ligne, vous pouvez utiliser group_concat()
pour les afficher sous forme de liste séparée par des virgules.
Syntaxe
Vous pouvez utiliser cette fonction de l'une des manières suivantes :
group_concat(X)
group_concat(X,Y)
En d'autres termes, le group_concat()
La fonction peut être utilisée avec un ou deux arguments.
Le deuxième argument spécifie un caractère à utiliser comme séparateur. Si vous ne le précisez pas, une virgule (,
) sera utilisé comme séparateur.
Exemple avec un argument
Voici un exemple d'appel de group_concat()
avec un seul argument.
SELECT group_concat(FirstName)
FROM Employee;
Résultat :
Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura
Si je n'ai pas utilisé group_concat()
pour concaténer cette colonne, les résultats auraient ressemblé à ceci :
SELECT FirstName
FROM Employee;
Résultat :
Andrew Nancy Jane Margaret Steve Michael Robert Laura
Utiliser un séparateur personnalisé
Comme mentionné, vous avez la possibilité de spécifier le caractère à utiliser comme séparateur.
Voici un exemple de spécification du symbole de tuyau (|
) comme séparateur.
SELECT group_concat(FirstName, '|')
FROM Employee;
Résultat :
Andrew|Nancy|Jane|Margaret|Steve|Michael|Robert|Laura
En voici un autre qui utilise une virgule, mais ajoute également un espace à droite de la virgule.
SELECT group_concat(FirstName, ', ')
FROM Employee;
Résultat :
Andrew, Nancy, Jane, Margaret, Steve, Michael, Robert, Laura
Grouper les résultats
Vous pouvez renvoyer plusieurs colonnes et utiliser le GROUP BY
clause pour les regrouper de manière appropriée.
Voici un exemple.
SELECT ArtistId, group_concat(AlbumName)
FROM Albums
GROUP BY ArtistId LIMIT 10;
Résultat :
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