SELECT … FOR XML PATH(''),1,1)是什么意思?
我正在学习SQL中的一个问题 ,在这里我看到了这个的用法,可以让我明白什么XMLpath('')在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
在这里学习没有真正的技术。 将多行数据连接成一个string只是一个可爱的把戏。 XML
格式化function的使用比使用XML
格式function更为古怪。
SELECT ',' + ColumnName ... FOR XML PATH('')
根据组合ColumnName
列中的多行数据生成一组逗号分隔值。 它会产生一个像,abc,def,ghi,jkl
。
STUFF(...,1,1,'')
然后用于删除前面的技巧生成的前导逗号,请参阅STUFF
有关其参数的详细信息。
(奇怪的是,很多人倾向于将这种产生逗号分隔值的方法称为“STUFF方法”,尽pipeSTUFF
只负责最后的修整位)
SQL引用的SQL用于MSSQL
string连接。
它通过预先将行连接起来,
使用for xml path
来得到结果,a,b,c,d
。 然后使用它replace的stuff
,
为 ,从而将其删除。
('')
for xml path
用于删除正在自动创build的包装节点。 否则,它看起来像<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 ...
- 更多的东西
- 更多的XMLpath