Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Quelle est la signification de SELECT ... FOR XML PATH(' '),1,1) ?

Il n'y a pas vraiment de technique à apprendre ici. C'est juste une astuce mignonne pour concaténer plusieurs lignes de données en une seule chaîne. Il s'agit plus d'une utilisation originale d'une fonctionnalité que d'une utilisation prévue du XML fonction de formatage.

SELECT ',' + ColumnName ... FOR XML PATH('')

génère un ensemble de valeurs séparées par des virgules, basé sur la combinaison de plusieurs lignes de données à partir de ColumnName colonne. Il produira une valeur comme ,abc,def,ghi,jkl .

STUFF(...,1,1,'')

Est ensuite utilisé pour supprimer la virgule de début générée par l'astuce précédente, voir STUFF pour plus de détails sur ses paramètres.

(Étrangement, beaucoup de gens ont tendance à se référer à cette méthode de génération d'un ensemble de valeurs séparées par des virgules comme "la méthode STUFF" malgré le STUFF n'étant responsable que d'un dernier ajustement)