A
の属性を持つXml要素を、列内のXml値からxxxx
の値で削除する必要があります。テーブル内のxml列を更新する
方法1:
update t set x = x.query('//E[@A != "xxxx"]')
方法2:
1が優れているupdate t set x.modify('delete /E[@A = "xxxx"]')
?
A
の属性を持つXml要素を、列内のXml値からxxxx
の値で削除する必要があります。テーブル内のxml列を更新する
方法1:
update t set x = x.query('//E[@A != "xxxx"]')
方法2:
1が優れているupdate t set x.modify('delete /E[@A = "xxxx"]')
?
両方のコールが同じことをしないだろう。このアプローチは
SET @[email protected](N'//test[@a!="xxx"]')
のいずれかで、この--try
DECLARE @xml XML=
N'<root>
<test pos="1" a="xxx">test 1</test>
<test pos="2" a="SomeOther">test 2</test>
<test pos="3" a="xxx">test 3</test>
<OtherElement>This is another element</OtherElement>
</root>';
を、-ORこの
SET @xml.modify(N'delete //test[@a="xxx"]')
SELECT @xml;
結果でそれを試してみてください最初のものは
<test pos="2" a="SomeOther">test 2</test>
<root>
<test pos="2" a="SomeOther">test 2</test>
<OtherElement>This is another element</OtherElement>
</root>
XMLはテキストとして保存されていない第2のリターンはあなたがを見ながら。複雑な文書を表すツリー構造として格納されます。 に変更するこれはかなり簡単です、ちょうどいくつかの要素を蹴ってください。 query()
のアプローチでは、XMLを再構築し、最初のものを新しいものに置き換えなければなりません。だから私の明確な助言は:modify()
のアプローチを使用してください! XQuery
とFLWOR
で本当にうまくいけば、query()
のアプローチははるかに強力ですが、これは別の話です...
メンテナンス上の理由から私はそれを選択したいと思います。 – pmbAustin