Maison >base de données >tutoriel mysql >Comment les fonctions FOR XML PATH et STUFF fonctionnent-elles ensemble pour la concaténation de chaînes dans SQL Server ?
Concaténation de chaînes SQL Server : maîtrise de FOR XML PATH et STUFF
SQL Server offre des capacités robustes de manipulation de chaînes, en particulier avec les fonctions FOR XML PATH
et STUFF
. Ces fonctions sont inestimables pour concaténer les données de plusieurs lignes en une seule chaîne.
Déconstruire FOR XML PATH
La fonction FOR XML PATH
transforme les résultats de la requête au format XML. En spécifiant un chemin, vous contrôlez la structure XML. Par exemple, pour créer une liste de noms séparés par des virgules :
<code class="language-sql">SELECT ',' + name FROM temp1 FOR XML PATH('')</code>
Cela génère une chaîne XML avec une virgule en tête.
Utilisation de la fonction STUFF
La fonction STUFF
modifie les chaînes en remplaçant les caractères. Il faut quatre arguments : la chaîne d'origine, la position de départ, le nombre de caractères à supprimer et la chaîne de remplacement.
Pour supprimer la virgule initiale de la sortie XML ci-dessus :
<code class="language-sql">STUFF((SELECT ',' + name FROM temp1 FOR XML PATH('')), 1, 1, '')</code>
Cela nettoie efficacement la chaîne, laissant une liste de noms délimités par des virgules.
Utilisation synergique de FOR XML PATH
et STUFF
La combinaison de ces fonctions permet une puissante concaténation d'ensembles d'enregistrements. Considérez cette requête SQL :
<code class="language-sql">SELECT ID, abc = STUFF( (SELECT ',' + name FROM temp1 WHERE t1.id = t2.id FOR XML PATH ('')) , 1, 1, '') FROM temp1 t2 GROUP BY id</code>
Cette requête effectue les étapes suivantes :
FOR XML PATH
Sous-requête : Cette requête imbriquée récupère les noms associés à chaque ID, joignant temp1
(alias t1
) à la table de la requête externe (alias t2
). FOR XML PATH('')
concatène ces noms en un seul élément XML.STUFF
Fonction : La requête externe utilise STUFF
pour supprimer la virgule de début de la chaîne XML générée par la sous-requête.GROUP BY
Clause : Le GROUP BY id
garantit que le résultat final ne contient que des identifiants uniques, chacun avec ses noms concaténés correspondants.Conclusion
La puissance combinée de FOR XML PATH
et STUFF
offre une approche simplifiée de la concaténation de chaînes dans SQL Server. Cette technique simplifie la création de chaînes formatées, la fusion de texte de plusieurs lignes et la création d'agrégations personnalisées.
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!