這個節點(/filemeta/description/text())[1]
不會在XML存在,所以沒有什麼可更換。您必須改爲插入。如果你有一個場景,你有空的節點和節點的值的混合值,你必須運行兩個更新語句。
declare @filemetaDB table(filemeta xml)
insert into @filemetaDB values
('<filemeta><description>Not empty</description></filemeta>'), -- Not empty node
('<filemeta><description/></filemeta>'), -- Empty node
('<filemeta></filemeta>') -- Missing node
-- Replace value for nodes with value
update @filemetaDB
set filemeta.modify('replace value of (/filemeta/description/text())[1] with "TEST 1"')
where filemeta.exist('/filemeta/description/text()') = 1
-- Add text node for empty nodes
update @filemetaDB
set filemeta.modify('insert text{"TEST 2"} into (/filemeta/description)[1]')
where filemeta.exist('/filemeta/description/text()') = 0
select *
from @filemetaDB
結果:
filemeta
------------------------------------------------------
<filemeta><description>TEST 1</description></filemeta>
<filemeta><description>TEST 2</description></filemeta>
<filemeta />
精闢解釋,謝謝! – wonea 2011-06-07 08:54:34
如何在修改方法內的INSERT語句中使用變量? – Si8 2015-08-27 19:05:33
@ SiKni8看看使用sql:variable(「」) – 2015-08-27 19:53:59