如何查询SQL Server中的XML列中的数据

时间:2016-03-29 03:57:47

标签: c# sql sql-server xml

我在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进行查询。

2 个答案:

答案 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"')