請參閱下面的DDL:爲什麼STUFF刪除XML?
create table #Test (id int,Name varchar(30))
insert into #Test values (1,'Ian')
insert into #Test values(1,'Mark')
insert into #Test values(2,'James')
insert into #Test values(3,'Karen')
insert into #Test values(3,'Suzie')
和下面的SQL:
select * from #Test for xml path('')
返回:
<id>1</id>
<Name>Ian</Name>
<id>1</id>
<Name>Mark</Name>
<id>2</id>
<Name>James</Name>
<id>3</id>
<Name>Karen</Name>
<id>3</id>
<Name>Suzie</Name>
這是我所期望的那樣。現在看到下面的SQL:
SELECT distinct ID,
STUFF((select ','+ NAME from #Test as #Test1 where #Test1.id=#Test2.id FOR XML PATH('')),1,1,'') FROM #Test as #Test2
返回:
1 Ian,Mark
2 James
3 Karen,Suzie
這就是我想要的東西回來。但是,XML元素去哪了?
這是我讀過的最重要的事情之一。這證明代碼實際上是一種黑客攻擊,可能在未來的版本中不可靠。這是正確的答案。 – Paul