Conversion de valeurs de cellules séparées par des virgules en lignes individuelles à l'aide de SQL Server
Lorsque vous traitez des données dans une table, vous pouvez parfois rencontrer des valeurs stockées sous forme de chaînes séparées par des virgules dans une seule cellule. Pour faciliter l'analyse ou le traitement ultérieur, il peut être nécessaire de diviser ces valeurs en lignes distinctes. Cet article explique comment atteindre cet objectif à l'aide d'une requête SQL Server SELECT.
Problème :
Considérons une table nommée « Sample » avec une colonne appelée « String » qui contient des valeurs séparées par des virgules. Vous devez transformer les données dans un format où chaque valeur occupe sa propre ligne :
Tableau d'origine :
Id | String |
---|---|
1 | abc,def,ghi |
2 | jkl,mno,pqr |
Sortie souhaitée :
Id | processedrows |
---|---|
1 | abc |
1 | def |
1 | ghi |
2 | jkl |
2 | mno |
2 | pqr |
Solution :
Pour obtenir le résultat souhaité, vous pouvez utiliser le SELECT suivant requête :
SELECT A.[id], Split.a.value('.', 'VARCHAR(100)') AS String FROM (SELECT [id], CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML) AS String FROM TableA) AS A CROSS APPLY String.nodes ('/M') AS Split(a);
Explication :
Référence :
Pour plus d'informations sur cette technique et les solutions alternatives, reportez-vous à la ressource suivante :
http:/ /www.sqljason.com/2010/05/converting-single-comma-separated-row.html
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!