将多行 XML 数据合并为一个 XML 值(SQL 服务器)
Combine Multiple Rows of XML Data into One XML Value (SQL Server)
我有一个包含两列的 table(DataXML 是 xml 数据类型):
RowID DataXML
––––– –––––––––––––––––––––––––––
1 <ELEM FOO="11" BAR="A" />
2 <ELEM FOO="22" BAR="B" />
3 <ELEM FOO="33" BAR="C" />
4 <ELEM FOO="44" BAR="D" />
我想写一个像这样的 T-SQL 语句:
declare @MyXML xml;
set @MyXML = (
SELECT DataXML
FROM MyTable
WHERE RowID BETWEEN 2 AND 3
FOR XML ??????
);
并在@MyXML 中得到此文档:
<ROOT>
<ELEM FOO="22" BAR="B" />
<ELEM FOO="33" BAR="C" />
</ROOT>
如何为我的 set @MyXML = ...
语句编写查询以获得我想要的结果?
感谢您阅读我的问题。
段
没有列别名的子选择不会将其结果包装在 XML 元素中:
declare @data table (
[RowID] int not null
, [DataXML] xml not null
);
insert into @data ([RowID], [DataXML])
values (1, N'<ELEM FOO="11" BAR="A" />')
, (2, N'<ELEM FOO="22" BAR="B" />')
, (3, N'<ELEM FOO="33" BAR="C" />')
, (4, N'<ELEM FOO="44" BAR="D" />');
select (
select (select a.[DataXML])
from @data as a
where a.RowID between 2 and 3
for xml path(''), type
)
for xml path('ROOT'), type;
Returns:
<ROOT>
<ELEM FOO="22" BAR="B" />
<ELEM FOO="33" BAR="C" />
</ROOT>
我有一个包含两列的 table(DataXML 是 xml 数据类型):
RowID DataXML
––––– –––––––––––––––––––––––––––
1 <ELEM FOO="11" BAR="A" />
2 <ELEM FOO="22" BAR="B" />
3 <ELEM FOO="33" BAR="C" />
4 <ELEM FOO="44" BAR="D" />
我想写一个像这样的 T-SQL 语句:
declare @MyXML xml;
set @MyXML = (
SELECT DataXML
FROM MyTable
WHERE RowID BETWEEN 2 AND 3
FOR XML ??????
);
并在@MyXML 中得到此文档:
<ROOT>
<ELEM FOO="22" BAR="B" />
<ELEM FOO="33" BAR="C" />
</ROOT>
如何为我的 set @MyXML = ...
语句编写查询以获得我想要的结果?
感谢您阅读我的问题。
段
没有列别名的子选择不会将其结果包装在 XML 元素中:
declare @data table (
[RowID] int not null
, [DataXML] xml not null
);
insert into @data ([RowID], [DataXML])
values (1, N'<ELEM FOO="11" BAR="A" />')
, (2, N'<ELEM FOO="22" BAR="B" />')
, (3, N'<ELEM FOO="33" BAR="C" />')
, (4, N'<ELEM FOO="44" BAR="D" />');
select (
select (select a.[DataXML])
from @data as a
where a.RowID between 2 and 3
for xml path(''), type
)
for xml path('ROOT'), type;
Returns:
<ROOT>
<ELEM FOO="22" BAR="B" />
<ELEM FOO="33" BAR="C" />
</ROOT>