从已连接表的值更新XML列类型

问题描述 投票:0回答:1

我必须更新我的XML列中的值:

UPDATE HR_XML
SET Salaries.modify('replace value of 
                     (/Salaries/Marketing/Employee[@ID=("2")]/Salary/text())[1] 
                     with ("60000")')

当前值60000是硬编码的,但是我要与另一个表进行内部联接。

如何使用另一个表中的值?

UPDATE h
SET Salaries.modify('replace value of 
                     (/Salaries/Marketing/Employee[@ID=("2")]/Salary/text())[1] 
                     with ("60000")')
FROM HR_XML h
INNER JOIN table2 t2 ON h.id = t2.id

该值来自联接表列t2.NewSalary

sql-server xml
1个回答
0
投票

您可以为此使用sql:column() XQuery函数:

UPDATE h
SET Salaries.modify('replace value of 
                     (/Salaries/Marketing/Employee[@ID=("2")]/Salary/text())[1] 
                     with sql:column("NewSalary")')
FROM HR_XML h
INNER JOIN table2 t2 ON h.id = t2.id

请参见more details on docs.microsoft.com