我正在学习sql question之一and here我看到了这个的用法,有人可以让我理解 xml path('') 在 sql 中的含义吗?是的,我浏览了网页,但我不太明白!
我没有得到后面的东西,现在这段代码做了什么?(仅选择
部分)
declare @t table
(
Id int,
Name varchar(10)
)
insert into @t
select 1,'a' union all
select 1,'b' union all
select 2,'c' union all
select 2,'d'
select ID,
stuff(
(
select ','+ [Name] from @t where Id = t.Id for XML path('')
),1,1,'')
from (select distinct ID from @t )t
最佳答案
这里没有真正的技术可学。将多行数据连接成一个字符串只是一个可爱的技巧。与其说是 XML
格式化功能的预期用途,不如说是对某个功能的奇怪使用。
SELECT ',' + ColumnName ... FOR XML PATH('')
根据组合 ColumnName
列中的多行数据,生成一组逗号分隔值。它将产生一个类似 ,abc,def,ghi,jkl
的值。
STUFF(...,1,1,'')
然后用于删除上一个技巧生成的前导逗号,请参阅 STUFF
有关其参数的详细信息。
(奇怪的是,很多人倾向于将这种生成逗号分隔值集的方法称为“STUFF 方法”,尽管 STUFF
仅负责最后的修剪)
关于sql - SELECT ... FOR XML PATH (' ' ),1,1) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21623593/