【发布时间】:2017-03-30 15:58:21
【问题描述】:
我有一个表,其中有一列 ID 和一列 XMLData。不幸的是,XML 数据列目前没有对 XML 本身内部的 ID 的任何引用,所以如果我只导出此列并对其进行解析,我将无法将其绑定回 ID。
我正在尝试向 XML 中添加一个节点,如下所示:
<AddedNode>
<Id>10862832</Id>
</AddedNode>
这将允许从 XML 本身解析 ID,并连接回来。我尝试通过以下方法添加数据:
With Test_CTE (Id, XMLData, AddedXML)
As
(
select Id, XMLData, cast('<AddedNode>
<Id>' + cast(Id as varchar(20)) + '</Id>
</AddedNode>' as varchar(max)) as AddedXML
from dbo.TestTable
)
update T
set XMLData.modify('insert ' + CTE.AddedXML + '
as last into (/RootNode[1])
')
from dbo.TestTable T
inner join Test_CTE CTE on CTE.Id = T.Id
但我收到错误“XML 数据类型方法“修改”的参数 1 必须是字符串文字。”
我确定这与我试图通过一列数据拉取插入节点有关,但谁能告诉我如何修复它?
注意:我意识到我也可以通过使用变量对整个表进行 while 循环来完成此操作,但表中有大约 250 万行,这需要的时间比我想要的要长。
【问题讨论】:
标签: xml sql-server-2012