このノード (/filemeta/description/text())[1]
XML には存在しないため、置き換えるものはありません。代わりに挿入を行う必要があります。空のノードと値を持つノードが混在しているシナリオがある場合は、2 つの更新ステートメントを実行する必要があります。
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 />
プレ>