给定以下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变量并执行替换?
答案 0 :(得分:2)
您可以直接操作XML变量并执行替换:
set @xmldata.modify('replace value of (/Collection/Plan/Type/text())[1] with "new value"')
select @xml
(XPath可能不完全正确,因为我无法访问sql server atm)
另外,请注意,如果UNKNOWN实际上是空文本,这将不起作用,这需要更多的工作!)