Как я могу обновить значение тега XML со значением тега XML из другой связанной таблицы?
что-то вроде этого:
UPDATE v2
SET
[xml].modify ('replace value of (//TAG1/text())[1]
with "CAST(v1.[xml].query(''//TAG2'') AS NVARCHAR(MAX))"')
FROM
table2 v2,
table1 v1
WHERE
v2.id = v1.id
Я не думаю, что вы сможете сделайте это за один шаг - но вы можете сделать это за два шага, если вы используете SQL Server 2008:
DECLARE @NewValue NVARCHAR(50)
SELECT @NewValue = [xml].value('(//TAG2)[1]', 'NVARCHAR(50)')
FROM dbo.v1
WHERE id = 1
UPDATE dbo.v2
SET [xml].modify('replace value of (//TAG1/text())[1] with sql:variable("@NewValue")')
WHERE id = 1
Возможность указать sql: переменную
в вашем заменить значение
XQuery - это новая функция в SQL Server 2008, поэтому, если вы застряли на 2005, это, к сожалению, не сработает.