簡體   English   中英

將具有屬性的XML元素插入SQL XML列

[英]Insert XML element with attribute into SQL XML column

我將以下XML數據存儲在[MyTable].Column1 ,這是XML類型列。

在此處輸入圖片說明

我想向其中插入一個新元素:

在此處輸入圖片說明

我正在使用以下SQL,它已成功執行,但是當我再次查詢相同的列值時,看不到新的XML元素。 我會錯過某些帶有屬性的元素插入的語法嗎?

UPDATE [MyTable] 
SET Column1.modify('insert <Setting Name="H" Value="0"/> as last into (/SettingValues)[1]')
WHERE ID = 'xxxxx' 

首先-關於下一個問題:請不要發布圖片! 嘗試設置一個測試方案。 請閱讀如何提出一個好的SQL問題以及如何創建MCVE

關於你的問題

您的代碼-乍一看-應該可以工作。 但是您顯然已對其進行了修改,以適合該論壇。

DECLARE @myTable TABLE(ID VARCHAR(100),Column1 XML)
INSERT INTO @myTable VALUES
 ('111'
  ,'<SettingValues>
     <Setting Name="A-name" Value="A-value"/>
   </SettingValues>')
, ('222'
  ,'<SettingValues>
     <Setting Name="A-name" Value="A-value"/>
   </SettingValues>');

UPDATE @MyTable 
SET Column1.modify('insert <Setting Name="H" Value="0"/> as last into (/SettingValues)[1]')
WHERE ID = '222';

SELECT * 
FROM @myTable

這按預期工作。

ID  Column1
111 <SettingValues><Setting Name="A-name" Value="A-value" /></SettingValues>
222 <SettingValues><Setting Name="A-name" Value="A-value" /><Setting Name="H" Value="0" /></SettingValues>

執行后,您會看到“受影響的第一行”。

一些想法:

  • 過濾器未滿
  • 給定的XML聲明了名稱空間,但從未使用過它們。這有點奇怪。 您是否減少了名稱空間,並且原始XML包含默認名稱空間(或者以某種方式為元素添加了前綴)?
  • 您正在檢查錯誤的目標(其他服務器,其他架構,其他表...

但是:上面的代碼應該工作...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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