2014-10-20 134 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"');