将一个 SQL xml 变量中的子节点插入到另一个 xml 变量中

Vin*_*mir 4 sql-server xquery nodes

我有两个 xml 变量:

@main xml = '<root></root>'
@insert xml = '<rows><row>SomeRow</row></rows>'
Run Code Online (Sandbox Code Playgroud)

我想插入@insert 行的子节点,以便得到如下所示的结果 XML:

<root>
   <row>SomeRow</row>
</root>
Run Code Online (Sandbox Code Playgroud)

我很清楚从 sql 变量插入 xml(使用 sql:variable("@insert")),但这会插入整个 XML,包括根元素。我想要的是只在@insert 变量中插入根元素的子节点。

谢谢一堆。

gof*_*fr1 5

一种方法是更改​​您需要插入另一个 xml 的变量中的数据:

DECLARE @main xml = '<root></root>',
        @insert xml = '<rows><row>SomeRow</row></rows>'

SELECT @insert = @insert.query('/rows/row')

SET @main.modify('             
insert sql:variable("@insert")             
into (/root)[1] ')             
SELECT @main 
Run Code Online (Sandbox Code Playgroud)

输出:

<root>
  <row>SomeRow</row>
</root>
Run Code Online (Sandbox Code Playgroud)