[英]Change XML attribute values in SQL Server XML column
我有一個如下的SQL Server數據庫表:-
Id (int) Info(xml)
------------------------
1 <xml....
2 <xml ...
3 <xml ...
“信息”字段中每個記錄中的XML類似於:
<CodesParameter xmlns="http://mynamespace.com/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Data Code="A1" HasMoreData="true">
.
.
</Data>
</CodesParameter>
我希望能夠在XML中更改<Data Code="...">
的值,並嘗試了以下查詢:-
UPDATE MyTable
SET Info.modify('replace value of (Data[1]/@Code)with ("B1")')
WHERE Id = 2
Go
該消息返回說查詢已成功執行,但該值未更改。
我試過聲明名稱空間:
UPDATE MyTable
SET Info.modify('declare namespace myns="http://mynamespace.com/";
replace value of (/myns:WebTableParameter[1]/myns:DataTable[1]/@Code)with ("B1")')
WHERE Id = 2
Go
但是結果相同-消息顯示查詢已成功執行,但沒有任何改變。
任何幫助表示贊賞。
您有幾個問題:
UPDATE
) 嘗試以下語句:
;WITH XMLNamespaces(DEFAULT 'http://mynamespace.com/')
UPDATE dbo.MyTable
SET Info.modify('replace value of (/CodesParameter/Data[1]/@Code)[1] with ("B1")')
WHERE Id = 1
基本上,您需要從XML文檔的根開始-您完全錯過了(或忽略了) <CodesParameter>
節點。 另外:您需要選擇一個屬性-因此,在括號后還需要另一個[1]
。
通過此語句,我能夠根據需要更新XML。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.