2014-10-20 59 views
3

我在sql server 2008R2中有一個名爲DateRule的表,我試圖更新一個XML列值,但它不像預期的那樣工作。在SQL Server 2008 R2中更新表的XML列

  • DateRuleId:40
  • 說明:經過2個月的時間始於足下
  • DateRuleXml:

     <Daterule> 
          <Type>Timespan</Type> 
          <months>2</months> 
          <days>0</days> 
          <hours>0</hours> 
          <minutes>0</minutes> 
          <seconds>0</seconds> 
          <After>1</After> 
          <Reference>1</Reference> 
         </Daterule> 
    

我試圖運行的查詢是:

update centralq3.wf.DateRule 
set DateRuleXml.modify('replace value of (/Daterule/@Reference)[1] with "6"') 
where DateRuleId = 40 

And:

update centralq3.wf.DateRule 
set DateRuleXml.modify('replace value of (//@Reference)[1] with "6"') 
where DateRuleId = 40 

他們都成功並說(1行受影響),但引用的值沒有改變。我做錯了什麼?我知道有很多關於這個問題,但沒有幫助我..

編輯! 答:

UPDATE centralq3.wf.DateRule 
SET DateRuleXml.modify('replace value of (/Daterule/Reference[1]/text())[1] with "6"') 
WHERE DateRuleId = 40 
+0

試試這個:'設置DateRuleXml.modify('取代的價值(/Daterule/@Reference)[.=1][1]與「6」')'單獨 – 2014-10-20 11:44:54

+0

成功,告訴我,1行受到影響,但沒有任何變化 – Ciprian 2014-10-20 11:49:54

+0

工作!非常感謝你! – Ciprian 2014-10-20 11:55:42

回答

0

它會:

SET DateRuleXml.modify('replace value of (/Daterule/Reference[1]/text())[1] with "6"');