Maison >base de données >tutoriel mysql >Comment STUFF et FOR XML PATH concatènent-ils des données dans SQL Server ?

Comment STUFF et FOR XML PATH concatènent-ils des données dans SQL Server ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-22 22:49:11210parcourir

How Do STUFF and FOR XML PATH Concatenate Data in SQL Server?

La combinaison astucieuse de STUFF et FOR XML PATH dans SQL Server

Dans SQL Server, la combinaison des fonctions STUFF et FOR XML PATH peut connecter et traiter les données efficacement. Voyons comment ces deux fonctions fonctionnent ensemble pour obtenir le résultat souhaité.

Le rôle de FOR XML PATH

FOR XML PATH Convertit les résultats de la requête en une chaîne d'éléments XML. L'ajout d'une chaîne vide comme argument ('') à FOR XML PATH produit une liste de valeurs séparées par des virgules. Par exemple :

<code class="language-sql">SELECT ',' + name 
FROM temp1
FOR XML PATH ('')</code>

Le résultat est :

<code>,aaa,bbb,ccc,ddd,eee</code>

Le rôle de STUFF

La fonction STUFF permet d'insérer ou de remplacer des caractères dans une chaîne. En spécifiant les paramètres de position de départ et de longueur sur 1, vous supprimez effectivement le premier caractère de la chaîne :

<code class="language-sql">STUFF(
    (SELECT ',' + NAME
    FROM temp1
    FOR XML PATH('')
    ), 1, 1, ''
)</code>

Cela supprimera la virgule au début de la liste de noms :

<code>aaa,bbb,ccc,ddd,eee</code>

Connexion basée sur l'ID

Enfin, utilisez Group By pour rejoindre la liste modifiée avec la colonne Id pour agréger et renvoyer le résultat souhaité :

<code class="language-sql">SELECT ID, abc = STUFF(
    (SELECT ',' + name 
    FROM temp1 t1
    WHERE t1.id = t2.id
    FOR XML PATH (''))
    , 1, 1, '') 
FROM temp1 t2
GROUP BY id;</code>

Ce code explique succinctement comment STUFF et FOR XML PATH fonctionnent ensemble dans SQL Server pour produire le résultat souhaité.

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