我有一个标量 xml 变量:
DECLARED @XML xml =
'<rows>
<row>
<column1 attrib="" />
<column2 attrib="" />
</row>
<!-- ... -->
</rows>';
我想拆分数据,以便将每一行的 xml 分配给表中的新记录:
Id | ... | XML
1 | | '<row><column1 attrib="" /><column2 attrib="" /></row>'
2 | | etc.
3 | | etc.
我还没有完全掌握 xquery,所以我在编写一个我想要的插入语句时遇到了麻烦。
INSERT into MyTable( [XML])
SELECT @XML.query('row')
现在我知道发生了一些事情,但它似乎并没有按照我的意图插入多个新记录,而是将带有空字符串的单个记录插入到[XML]
列中。
我没有得到什么?
澄清
我不是试图使用value(...)
. 我正在尝试捕获整个<row>
元素并将其保存到类型的列中xml
我已经尝试nodes(...)
并提出了:
INSERT into MyTable([XML])
SELECT C.query('*')
FROM @XML.nodes('rows/row') T(C)
这更接近我想要的,但结果不包括外部<row>
标签,只包括<column*>
它包含的元素。