簡體   English   中英

在SQL Server XML列中更改XML屬性值

[英]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

但是結果相同-消息顯示查詢已成功執行,但沒有任何改變。

任何幫助表示贊賞。

您有幾個問題:

  1. 您完全忽略了所討論的XML文檔中的XML名稱空間 (在原始UPDATE
  2. 您使用不完整的XPath表達式進行修改

嘗試以下語句:

;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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM