У меня есть столбец XML, который содержит значения идентификатора внешнего ключа, хранящиеся в XML. Мне нужно обновить XML при изменении значения ID (например, изменить все экземпляры «26» на «999»).Как использовать XML.modify 'replace value' с предложением WHERE
Из моих показаний here я пытался адаптировать код, но на самом деле не обновление:
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
логика для достижения этой цели, пожалуйста?