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
Libérer: 2025-01-22 22:59:11
original
1034 Les gens l'ont consulté

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>
    Copier après la connexion

    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>
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal