XML 内に格納された外部キー ID 値を含む XML 列があります。ID 値が変更されたときに XML を更新できるようにする必要があります (たとえば、"26" のすべてのインスタンスを "999" に変更します)。
ここでの私の読書から、コードを適応させようとしましたが、実際には更新されていません:
DECLARE @tmp TABLE (xmlCol xml);
INSERT INTO @tmp (xmlCol) SELECT
('<search><groups><g id="25" /><g id="26" /></groups></search>') UNION ALL SELECT
('<search><groups><g id="2" /><g id="9" /></groups></search>') UNION ALL SELECT
('<search><groups><g id="7" /><g id="12" /><g id="26" /></groups></search>');
SELECT * FROM @tmp;
DECLARE @oldId int = 26;
DECLARE @newId int = 999;
UPDATE @tmp SET xmlCol.modify('replace value of
(/search/groups/g/text()[.=(sql:variable("@oldId"))])[1]
with
(sql:variable("@newId"))');
SELECT * FROM @tmp;
これを達成するための正しいmodify
ロジックは何ですか?