2017-09-05 137 views
0

我有一個nvarchar列XML內容。不知道它是否需要轉換爲XML。所有的XML內容的格式,除了大量的記錄同樣需要在第一個節點需要的屬性添加到它被修改:SQL查詢更新nvarchar與XML內容添加缺少的屬性節點

<MyFirstNode SomeAttribute="value" SomeOtherAttribute="anothervalue"> 

更新:

<MyFirstNode SomeAttribute="value" AddThisAttribute="nicevalue" SomeOtherAttribute="anothervalue"> 

如何更新所有AddThisAttribute =「nicevalue」所需的節點?都需要相同的屬性和值。

+0

如果列中包含XML,那麼列是否爲NVARCHAR,而不是XML?我想你的選擇歸結爲將它轉換爲XML,並使用'modify('插入屬性AddThisAttribute {(「nicevalue」)}到(*)[1]')函數或寫一個(可能是複雜的)STUFF語句爲你的專欄。 – ZLK

回答

1

如果這實際上將被解釋爲XML,則不必在屬性列表的中間插入AddThisAttribute =「nicevalue」;一種選擇是做一個簡單的

UPDATE myTable 
SET XMLColumn = REPLACE(XMLColumn, '<MyFirstNode ', '<MyFirstNode AddThisAttribute="nicevalue" ') 

這可能是比試圖插入值更容易,尤其是在各行中SomeAttribute和SomeOtherAttribute變化。

或者,

UPDATE myTable 
SET XMLColumn = REPLACE(XMLColumn, ' SomeOtherAttribute=', ' AddThisAttribute="nicevalue" SomeOtherAttribute=') 

可以工作,但如果「SomeOtherAttribute」出現在比MyFirstNode以外的其他節點類型,這可能使不期望的改變。

+0

我將此設置爲正確的答案,但這是一個nvarchar,我認爲您需要先將其轉換爲XML,然後才能將其更新爲XML列。謝謝! –