Transformer 1 colonne en chaine CSV

Une petite requête utile pour transformer les valeurs d’une colonne d’une table en chaine de caractères séparées par une virgule (ou autre …).

Je me base sur une table de la Base AdventureWorks, mais vu la complexité diabolique de la requête, vous pouvez transformer à loisir …

Une petite requête pour tester les valeurs :

SELECT Name
FROM Production.Product;

image

 

Je recherche d’abord la longueur maximale de la chaine, mais on pourrait très bien mettre une valeur arbitraire suffisamment élevée.

DECLARE @lg int
SELECT @lg=SUM(LEN(p.Name))
FROM Production.Product p

SELECT SUBSTRING(
(SELECT ‘,’ + p.Name
FROM Production.Product p
ORDER BY p.Name
FOR XML PATH( »)),2,@lg) AS CSV

image

Enjoy !

A propos Christophe

Consultant SQL Server Formateur certifié Microsoft MVP SQL Server MCM SQL Server 2008
Cet article a été publié dans SQL Server. Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s