SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment fonctionne Group_Concat() dans SQLite

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