更新XML在SQL服务器

更新XML在SQL服务器

问题描述:

我在一个SQL Server表中的XML列有一个XML结构鉴定值如下:更新XML在SQL服务器

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

,我期待更新定制与价值具有属性Year的元素。一直在寻找这一段时间,最好的尝试是:

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

有人能帮助指出我要去哪里错了吗?

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

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

具体而言,您需要指定/value/text()使得<value>节点的内部文本被替换。

+0

正是我在找的东西。非常感谢你。 – Tadhg 2010-06-17 09:06:21