2

我正在使用 xQuery,如果元素下不存在test元素标记,我正在尝试替换元素的值。ActiveUser

(我添加了引号以便能够在此处正确显示...)

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'。

我做错了什么?

4

1 回答 1

2

不允许嵌入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小提琴

于 2013-05-06T17:37:55.757 回答