使用属性更新XML以标识SQL Server中的值

时间:2010-06-17 08:50:51

标签: xml sql-server-2005

我在SQL Server表的XML列中有一个XML结构,如下所示:

<Customizations>
 <Customization name="OtherValue">
  <value>Test</value>
 </Customization>
 . . . .
 <Customization name="Year">
  <value>2009</value>
 </Customization>
</Customizations>

我正在寻找使用属性Year的元素更新Customization的值。一直在看这个并且最好的尝试是:

UPDATE TestTable
SET XmlColumn.modify(
'
    replace value of (/Customizations/Customization/@name[.="Year"]/value)[1] 
    with ( "2010" )
')

有人可以帮助指出我出错的地方吗?

1 个答案:

答案 0 :(得分:0)

您需要使用稍微不同的XPath表达式:

UPDATE TestTable
SET 
   XmlColumn.modify('replace value of (/Customizations/Customization[@name="Year"]/value/text())[1] with "2010"')
WHERE .......

具体来说,您需要指定/value/text(),以便替换<value>节点的内部文本。