如何根据 SQL 服务器中的另一个节点值更新 xml 节点值
How to update xml node value based on another node value in SQL Server
我在 "Test" table
中有以下员工 XML
<employees>
<employee>
<id>1</id>
<name>John doe 1</name>
</employee>
<employee>
<id>2</id>
<name>John doe 2</name>
</employee>
<employee>
<id>3</id>
<name>John doe 3</name>
</employee>
</employees>
我必须更新id为3的员工姓名。我正在通过以下方式更新。
update Test
set employeesXML.modify('replace value of (/employees/employee/name/text())[1]
with "xyz"')
where employeesXML.exist(N'/employees/employee/id[text()="3"]')
它使用 id 1 更新员工姓名,但如果我没有指定节点索引,它会抛出错误。
如何根据另一个节点的值替换一个节点的值?
到具有id的select节点,使用以下:
DECLARE @xml xml = '<employees>
<employee>
<id>1</id>
<name>John doe 1</name>
</employee>
<employee>
<id>2</id>
<name>John doe 2</name>
</employee>
<employee>
<id>3</id>
<name>John doe 3</name>
</employee>
</employees>'
SELECT @xml.value('(//employee[id=3]/name)[1]', 'nvarchar(max)')
要修改,请使用:
SET @xml.modify('replace value of (//employee[id=3]/name/text())[1] with "xyz"')
我在 "Test" table
中有以下员工 XML<employees>
<employee>
<id>1</id>
<name>John doe 1</name>
</employee>
<employee>
<id>2</id>
<name>John doe 2</name>
</employee>
<employee>
<id>3</id>
<name>John doe 3</name>
</employee>
</employees>
我必须更新id为3的员工姓名。我正在通过以下方式更新。
update Test
set employeesXML.modify('replace value of (/employees/employee/name/text())[1]
with "xyz"')
where employeesXML.exist(N'/employees/employee/id[text()="3"]')
它使用 id 1 更新员工姓名,但如果我没有指定节点索引,它会抛出错误。
如何根据另一个节点的值替换一个节点的值?
到具有id的select节点,使用以下:
DECLARE @xml xml = '<employees>
<employee>
<id>1</id>
<name>John doe 1</name>
</employee>
<employee>
<id>2</id>
<name>John doe 2</name>
</employee>
<employee>
<id>3</id>
<name>John doe 3</name>
</employee>
</employees>'
SELECT @xml.value('(//employee[id=3]/name)[1]', 'nvarchar(max)')
要修改,请使用:
SET @xml.modify('replace value of (//employee[id=3]/name/text())[1] with "xyz"')