我在xml
列中有这样的数据:
<product>
<productID>1</productID>
<productname>tea</productname>
</product>
<product>
<productID>2</productID>
<productname>coffee</productname>
</product>
我想将productname
的值更改为绿茶,其中productID = 2
。
我正在使用:
UPDATE [dbo].ProductDocs
SET ProductDoc.modify('replace value of (/Product/ProductName)[2] with "NewName"')
但是在这里它总会改变第二个产品的价值。请告诉我如何使用productID
进行查询。
答案 0 :(得分:2)
使用谓词表达式按product
值过滤productID
元素,如下所示:
UPDATE [dbo].ProductDocs
SET ProductDoc.modify('
replace value of (/product[productID=2]/productname/text())[1] with "NewName"
')
另请注意,正如其他答案所述,XML和XPath / XQuery区分大小写。
答案 1 :(得分:1)
首先,XML
区分大小写,XQuery
表达式也是如此。
现在你可以做到这一点。
UPDATE [dbo].ProductDocs
SET ProductDoc.modify('replace value of (/product[productID=2]/productname/text())[1] with "GreenTea"')