Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Qual è il significato di SELECT ... FOR XML PATH(' '),1,1)?

Non c'è una vera tecnica da imparare qui. È solo un trucco carino per concatenare più righe di dati in una singola stringa. È più un uso bizzarro di una funzione che un uso previsto dell'XML funzione di formattazione.

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

genera una serie di valori separati da virgole, basati sulla combinazione di più righe di dati da ColumnName colonna. Produrrà un valore come ,abc,def,ghi,jkl .

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

Viene quindi utilizzato per rimuovere la virgola iniziale generata dal trucco precedente, vedere STUFF per i dettagli sui suoi parametri.

(Stranamente, molte persone tendono a fare riferimento a questo metodo di generazione di un insieme di valori separati da virgole come "il metodo STUFF" nonostante STUFF essere responsabile solo di un ultimo po 'di rifilatura)