Maison >base de données >tutoriel mysql >Comment la fonction STUFF de SQL Server et la clause FOR XML PATH peuvent-elles être utilisées ensemble pour concaténer des chaînes au sein d'un groupe ?

Comment la fonction STUFF de SQL Server et la clause FOR XML PATH peuvent-elles être utilisées ensemble pour concaténer des chaînes au sein d'un groupe ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-22 22:59:111056parcourir

How can SQL Server's STUFF function and FOR XML PATH clause be used together to concatenate strings within a group?

SQL Server : combinaison de STUFF et FOR XML PATH pour la concaténation de chaînes groupées

Ce guide explique comment utiliser ensemble la fonction STUFF et la clause FOR XML PATH de SQL Server pour concaténer efficacement des chaînes au sein d'un groupe.

Comprendre les composants :

  1. FOR XML PATH('') : Cette clause transforme les résultats de la requête au format XML. L'utilisation d'une chaîne vide ('') comme argument PATH génère une liste de valeurs séparées par des virgules à partir de la colonne spécifiée, entourées de balises XML. Par exemple :

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

    Cela afficherait : ,aaa,bbb,ccc,ddd,eee

  2. STUFF Fonction : La fonction STUFF modifie une chaîne en en remplaçant une partie. Nous l'utilisons ici pour supprimer la virgule de début produite par FOR XML PATH(''). Les paramètres de la fonction sont :

    • La chaîne originale.
    • La position de départ pour le remplacement.
    • Le nombre de caractères à supprimer.
    • La chaîne de remplacement.

    Ainsi, STUFF((SELECT ',' NAME FROM temp1 FOR XML PATH('')), 1, 1, '') supprime la virgule initiale, ce qui donne : aaa,bbb,ccc,ddd,eee

  3. Jointure et regroupement : La requête finale joint la chaîne concaténée à la table d'origine à l'aide de la colonne ID, regroupant les résultats pour obtenir 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>

Cela génère un ensemble de résultats comme celui-ci :

Id abc
1 aaa,bbb,ccc,ddd,eee

Cette méthode fournit un moyen concis et efficace de concaténer des chaînes au sein de groupes dans SQL Server, évitant ainsi le recours à des techniques plus complexes.

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