如果节点存在,Xquery替换值



我正在使用xQuery,如果User元素下不存在元素标签Active,我正试图替换test元素的值。

(我添加了引号,以便能够在这里正确显示…)

declare @testXML xml = '
<USER>
  <ID>10</ID>
  <TEST>1</TEST>
</USER>'
set @testXML.modify('if (exists(/USER/Active)=false)
                 then replace value of /USER/TEST with "2"
                 else ()') 
select @testXML

我得到这个错误:

XQuery [modify()]: 'value'附近语法错误,期望'else'.

我做错了什么?

不允许在表达式中嵌入replace value of ... with ..

从(XML DML)

replace value of 
      Expression1 
with
      Expression2

你可以这样写:

set @testXML.modify('replace value of (/USER[not(Active)]/TEST/text())[1] 
                     with "2"')
SQL小提琴

相关内容

  • 没有找到相关文章

最新更新