2013-05-06 99 views
2

我正在使用xQuery,如果元素標記ActiveUser元素下不存在,我試圖替換test元素的值。如果節點存在,xquery替換值

(我加了引號可以在這裏正常顯示它...)

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()]: Syntax error near 'value', expected 'else'.

我是怎麼拿錯?

回答

2

您不允許在表達式中嵌入replace value of ... with ..

replace value of (XML DML)

replace value of 
     Expression1 
with 
     Expression2 

您可以使用這樣的事情,而不是:

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

SQL Fiddle

+0

感謝您的回答,但你知道爲什麼那麼是否還有不工作爲了我? – user2355293 2013-05-06 18:29:27

+0

@ user2355293我已更新答案。 – 2013-05-06 18:50:58