我在 xml
列中有这样的数据:
<product>
<productID>1</productID>
<productname>tea</productname>
</product>
<product>
<productID>2</productID>
<productname>coffee</productname>
</product>
我想将 productname
的值更改为 green tea,其中 productID = 2
。
我正在使用:
UPDATE [dbo].ProductDocs
SET ProductDoc.modify('replace value of (/Product/ProductName)[2] with "NewName"')
但在这里它总是会改变第二个产品的值(value)。请告诉我如何使用productID
查询。
最佳答案
使用谓词表达式按 productID
值过滤 product
元素,如下所示:
UPDATE [dbo].ProductDocs
SET ProductDoc.modify('
replace value of (/product[productID=2]/productname/text())[1] with "NewName"
')
另请注意,如其他答案中所述,XML 和 XPath/XQuery 区分大小写。
关于c# - SQL Server中如何查询XML列中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36275152/