我正在尝试更新 XML 列中的节点属性,但我被卡住了。不可否认,直到一天前, XQuery对我来说都是白噪音,我可以坚持更多,但这会伤害我的客户。我已经上下拖网了,仍然卡住了。
所以这里是我设置的相关部分:
桌子:
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”的所有项目节点,我需要将 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()]: ")" 是预期的。
任何人?