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 :
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
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 :
Ainsi, STUFF((SELECT ',' NAME FROM temp1 FOR XML PATH('')), 1, 1, '')
supprime la virgule initiale, ce qui donne : aaa,bbb,ccc,ddd,eee
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!