Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was bedeutet SELECT ... FOR XML PATH(' '),1,1)?

Hier gibt es keine wirkliche Technik zu lernen. Es ist nur ein netter Trick, mehrere Datenzeilen zu einer einzigen Zeichenfolge zu verketten. Es handelt sich eher um eine schrullige Verwendung einer Funktion als um eine beabsichtigte Verwendung von XML Formatierungsfunktion.

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

generiert einen Satz von durch Kommas getrennten Werten, basierend auf der Kombination mehrerer Datenzeilen aus ColumnName Säule. Es wird einen Wert wie ,abc,def,ghi,jkl erzeugen .

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

Wird dann verwendet, um das führende Komma zu entfernen, das der vorherige Trick erzeugt hat, siehe STUFF für Details zu seinen Parametern.

(Seltsamerweise neigen viele Leute dazu, diese Methode zum Generieren eines durch Kommas getrennten Satzes von Werten trotz des STUFF als "die STUFF-Methode" zu bezeichnen nur für ein letztes bisschen Trimmen verantwortlich ist)