【发布时间】:2013-10-03 12:16:49
【问题描述】:
我正在尝试更新 XML 列中的节点属性,但我被卡住了。诚然,直到一天前,XQuery 对我来说都是白噪音,我可以坚持更多,但这会伤害我的客户。我已经 SO 上下拖网,仍然卡住了。
以下是我设置的相关部分:
表:
CREATE TABLE Tbl(Id int IDENTITY, XmlCol XML)
INSERT Tbl VALUES(
'<root>
<item ID="1">some text input</item>
<item ID="7" PROP="10">1</item>
</root>
'
)
INSERT Tbl VALUES(
'<root>
<item ID="1">some other text input</item>
<item ID="8" PROP="10">1</item>
</root>
'
)
上下文?不要问我为什么,它太做作了,你会被困在试图理解它的过程中。
对于ID属性为“8”的所有item节点,我需要将PROP属性增加30。 完成后,我需要将匹配节点的 ID 属性从“8”更新为“7”,有效地合并项目,同时保持它们的 PROP 值分开。
这是我所获得的最接近的结果,但 SQL Server(或我)表现不佳。
更新声明:
DECLARE @newVal INT = 40
update Tbl
set XmlCol.modify('replace value of (/root/item[@ID="8"][@PROP="10"]/@PROP)[1]
with sql:variable("@newVal") ')
结果:
XQuery [Tbl.XMLCol.modify()]: ")" 是预期的。
有人吗?
【问题讨论】:
标签: sql-server xml sql-server-2008 xquery sqlxml