我有一个简单的XML在一个XML列中。
<Bands>
<Band>
<Name>beatles</Name>
<Num>4</Num>
<Score>5</Score>
</Band>
<Band>
<Name>doors</Name>
<Num>4</Num>
<Score>3</Score>
</Band>
</Bands>
我已成功更新了该列,具体操作如下:
-----just update the name to the id)----
UPDATE tbl1
SET [myXml].modify('replace value of (/Bands/Band/Name/text())[1]
with sql:column("id")')
一切都好。
问题 #1
如何使用这个查询将值更新为id+"lalala"
:
UPDATE tbl1
SET [myXml].modify('replace value of (/Bands/Band/Name/text())[1]
with sql:column("id") + "lalala"')
错误 XQuery [tbl1.myXml.modify()]: '+' 的参数必须为单个数值基元类型
问题#1
假设我不想更新第一条记录([1]
),但我想仅在 score>4
的情况下进行与上述相同的 udpate
。
我可以当然在 xpath 中编写:
replace value of (/Bands/Band[Score>4]/Name/text())[1]
但我不想在 Xpath 中这样做。是否有一种使用 Where
子句正常执行此操作的方法?
类似于:
UPDATE tbl1
SET [myXml].modify('replace value of (/Bands/Band/Name/text())[1]
with sql:column("id") where [...score>4...]')
[1]
的事情?难道他们没有考虑到我可能想要更新不止一个元素
吗? - Royi Namir[Score > 4]
在 where 和 xpath 上方的语句中都出现了(例如replace value of (/Bands/Band[Score > 4]/N
...)?我的意思是,现在 where 似乎是多余的。 - Royi Namir