修改XML TSQL数据类型

时间:2012-08-13 16:03:00

标签: xml tsql

我有以下XML:

declare @XML xml
set @XML = '<root>
<ati id_ati="16546" />
</root>'

我有这个结果选择查询:

[id_ati]
344
566
788
545

我想将@XML修改为:

<root>
    <ati id_ati="16546" />
    <ati id_ati="344" />
    <ati id_ati="566" />
    <ati id_ati="788" />
    <ati id_ati="545" />
</root>

怎么做?

韩国社交协会

1 个答案:

答案 0 :(得分:1)

您可以使用insert (XML DML)修改XML变量。

构建要插入新XML变量的XML,然后使用sql:variable()将该XML插入XML变量。

-- XML to change
declare @XML xml
set @XML = 
'<root>
   <ati id_ati="16546" />
 </root>'

-- Table holding data to insert
declare @T table(id_ati int)
insert into @T values(344),(566),(788),(545)

-- Build the XML you want to add
declare @X xml
set @X =
  (
  select id_ati as "@id_ati"
  from @T
  for xml path('ati')
  )

-- Modify your XML
set @XML.modify('insert sql:variable("@X") as last into root[1]')

-- View the result
select @XML

将表变量@T替换为您获取数据的任何查询。 @X中的XML如下所示:

<ati id_ati="344" />
<ati id_ati="566" />
<ati id_ati="788" />
<ati id_ati="545" />