我在SQL Server中有一个列表。
此列包含XML文档的每一行。
样本表:
Column
---------------
Row1: <ROOT>
Row2: <Name>name1</Name>
Row3: </ROOT>
列数据类型为nvarchar(max)
我想这样做:
DECLARE @RES_XML XML
SET @XML = Set from table above
如何总结上表中的所有行并填充@RES_XML
?
注意:;表格中的所有数据均超过nvarchar(max)
限制。
答案 0 :(得分:0)
通常,将值连接到变量的最简单方法是
declare @res nvarchar(max)
select @res = isnull(@res, '') + [Column]
from <table above>
select cast(@res as xml)
当然,未定义此查询中的连接顺序(但有一个trick来检查订单是否已维护)
答案 1 :(得分:0)
我对你超过Marc的nvarchar(max)
列的限制感到惊讶,但是你可能在数据库设置中有列限制设置,你无法改变。这是我将如何做到这一点,我假设有一些列让你按照适当的顺序订购标签,你不能依赖于数据库决定存储和检索标签的顺序行。
declare @t table (
id int,
x nvarchar(max)
)
insert into @t
select 1, '<ROOT>' union all
select 2, '<Name>name1</Name>' union all
select 3, '</ROOT>'
DECLARE @RES_XML XML
select @RES_XML = cast((
select x
from @t
order by id
for xml path(''), type
).value('.', 'nvarchar(max)') as xml)