大きなXMLテキスト値MSSQL内のXMLタグ値を置き換えます。MSSQL内のXML値を更新する
MSSQL内には、非常に大きなXMLを持つテキスト列であるformという列があります。特定のタグを見つけ、タグ内のそのサブタグの値をFalseからTrueに変更する必要があります。
これは私が現在持っているものです。
USE trainset;
UPDATE dbo.users
SET formxml = REPLACE(CAST(formxml as nvarchar(max)), '%<ttaycheckbox><name>cbTermsConditions</name><cargo>F</cargo></ttaycheckbox>%', '<ttaycheckbox><name>cbTermsConditions</name><cargo>T</cargo></ttaycheckbox>')
WHERE usersid = '0000GARX'
and formname ='ffOrderRpt'
and formxml LIKE ('%<ttaycheckbox><name>cbTermsConditions</name><cargo>F</cargo></ttaycheckbox>%')
それが更新を行っているように思え、 しかし、この後に私がこの特定の値を選択すると、の値はTrueではなくFalseです。
正しく更新されない原因は何ですか?
を - ほとんどすべてのケースで - 悪いアプローチ、文字列型に既存のXMLをキャストが、それを修正し、それをバックキャストします。これは、副作用(例えば、CDATAセクションを取り除く)を有する可能性がある。できるだけ* real * XMLメソッドを使用するべきです(この場合は '.modify()')。 – Shnugo