在SQL 2005中使用XQuery来替换节点的值?

时间:2009-06-13 05:10:33

标签: xml sql-server-2005 tsql xquery

给定以下XML变量,如何在TSQL for MS SQL中用“ FOO ”替换 StateCode 节点中的“ UNKNOWN ” 2005?

declare @xmldata xml

set @xmldata = 

    '<Collection>
        <Plan>
            <StateCode>UNKNOWN</StateCode>
            <Type>Tubular</Type> 
        </Plan>
    </Collection>'

与我找到的similar question不同,这只是一个XML类型的变量,而不是表记录。

我应该简单地将变量值插入到表中并使用该问题中提供的方法,还是可以直接操作XML变量并执行替换?

1 个答案:

答案 0 :(得分:2)

您可以直接操作XML变量并执行替换:

set @xmldata.modify('replace value of (/Collection/Plan/Type/text())[1] with "new value"')

select @xml

(XPath可能不完全正确,因为我无法访问sql server atm)

另外,请注意,如果UNKNOWN实际上是空文本,这将不起作用,这需要更多的工作!)