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 ?

Comment les fonctions FOR XML PATH et STUFF fonctionnent-elles ensemble pour la concaténation de chaînes dans SQL Server ?

DDD
DDDoriginal
2025-01-22 23:02:15391parcourir

How Do FOR XML PATH and STUFF Functions Work Together for String Concatenation in 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 :

  1. 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.
  2. 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.
  3. 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn