57 sql sql-server
我在其中一个问题中 学习sql,在这里我看到了这个用法,有些机构能让我理解xml路径('')在sql中的含义吗?是的,我通过网页浏览,我不太了解它!
我没有得到东西,现在这段代码做了什么?(只是select部分)
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
Run Code Online (Sandbox Code Playgroud)
Dam*_*ver 65
在这里学习没有真正的技术.将多行数据连接成一个字符串只是一个可爱的技巧.它更像是一种奇特的功能使用,而不是XML格式化功能的预期用途.
SELECT ',' + ColumnName ... FOR XML PATH('')
Run Code Online (Sandbox Code Playgroud)
基于组合来自ColumnName列的多行数据,生成一组逗号分隔值.它会产生类似的价值,abc,def,ghi,jkl.
STUFF(...,1,1,'')
Run Code Online (Sandbox Code Playgroud)
然后用于删除前一个技巧生成的前导逗号,STUFF有关其参数的详细信息,请参阅.
(奇怪的是,很多人倾向于将这种生成逗号分隔值的方法称为"STUFF方法",尽管STUFF只负责最后一点修剪)
Mic*_*šna 26
您引用的SQL用于字符串连接MSSQL.
它通过,使用for xml path结果
前置来连接行,a,b,c,d.然后用stuff它取代第一,对, thus removing it.
The ('')在for xml path用于去除包装节点,正被自动创建.否则它看起来像<row>,a,b,c,d</row>.
...
stuff(
(
select ',' + CAST(t2.Value as varchar(10)) from #t t2 where t1.id = t2.id
for xml path('')
)
,1,1,'') as Value
...
Run Code Online (Sandbox Code Playgroud)