Comment concaténer plusieurs lignes en une seule chaîne dans une base de données ?

Pour pouvoir concaténer différents enregistrements dans une seule chaîne, il faudra utiliser une extension SQL.

Le langage SQL permet de faire toutes sortes de requêtes sur une base de données. Pour pouvoir concaténer différents enregistrements dans une seule chaîne, il faudra cependant utiliser une extension SQL. Ces dernières sont développées par des entreprises afin d'enrichir un système de gestion de base de données. Cela peut s'avérer utile dans le cas où l'on souhaiterait regrouper des objets de plusieurs catégories :

Exemple d'enregistrements à regrouper :

categorie | objet
1 | assiette
1 | fourchette
1 | cuillère
2 | drap
2 | rideau
2 | serviette
Résultat souhaité :
1 | assiette,fourchette,cuillère
2 | drap,rideau,serviette

L'extension TRANSACT-SQL, disponible pour les systèmes de gestion de base de données SQL Server fournit la clause FOR XML PATH qui permet de regrouper entre eux les enregistrements d'une même table. Il faut ensuite utiliser une requête imbriquée pour pouvoir récupérer les noms des objets.

En utilisant la fonction SUBSTRING pour enlever la première virgule, on obtient la requête suivante :

Select distinct ST2.categorie,
substring((Select ','+ST1.objet AS [text()]
From dbo.table ST1
Where ST1.categorie = ST2.categorie
ORDER BY ST1.categorie
For XML PATH ('')),2, 1000) [table]
From dbo.table ST2

SQL