TSQL: Как я могу обновить значение тега XML со значением тега XML из другой связанной таблицы?

Как я могу обновить значение тега 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
6
задан Adam Wenger 27 November 2011 в 18:42
поделиться

1 ответ

Я не думаю, что вы сможете сделайте это за один шаг - но вы можете сделать это за два шага, если вы используете 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, это, к сожалению, не сработает.

2
ответ дан 9 December 2019 в 22:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: