Extraire des lignes à partir de valeurs de colonnes séparées par des virgules
Problème :
Étant donné un tableau contenant une colonne avec des valeurs séparées par des virgules valeurs, l'objectif est de convertir chaque valeur en valeurs distinctes lignes.
Requête :
SELECT A.[id],
Split.a.value('.', 'VARCHAR(100)') AS processedrows
FROM (SELECT [id],
CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML) AS String
FROM Sample) AS A CROSS APPLY String.nodes ('/M') AS Split(a);
Copier après la connexion
Explication :
- La requête interne crée une nouvelle colonne nommée Chaîne qui encapsule les valeurs d'origine séparées par des virgules dans des balises XML. Ceci est accompli à l'aide des fonctions CAST et REPLACE pour convertir les valeurs en une chaîne XML bien formée.
- La requête externe effectue une application croisée pour analyser la chaîne XML en nœuds à l'aide de la fonction nœuds. Chaque nœud représente une seule valeur séparée par des virgules.
- L'expression a.value('.','VARCHAR(100)') extrait la valeur du nœud a en tant que type de données VARCHAR(100). Cela nous donne les lignes traitées individuelles.
Référence :
- [Conversion de valeurs de lignes séparées par une seule virgule en plusieurs lignes à l'aide de SQL XML](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!