Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual é o significado de SELECT ... FOR XML PATH(' '),1,1)?


Não há nenhuma técnica real para aprender aqui. É apenas um truque fofo para concatenar várias linhas de dados em uma única string. É mais um uso peculiar de um recurso do que um uso pretendido do XML recurso de formatação.
SELECT ',' + ColumnName ... FOR XML PATH('')

gera um conjunto de valores separados por vírgulas, com base na combinação de várias linhas de dados do ColumnName coluna. Ele produzirá um valor como ,abc,def,ghi,jkl .
STUFF(...,1,1,'')

É então usado para remover a vírgula inicial que o truque anterior gerou, veja STUFF para detalhes sobre seus parâmetros.

(Estranhamente, muitas pessoas tendem a se referir a esse método de gerar um conjunto de valores separados por vírgula como "o método STUFF", apesar do STUFF sendo responsável apenas por um corte final)