【发布时间】:2020-07-21 13:26:38
【问题描述】:
我可以了解将 XML 节点的值(每行不同)替换为新值(所有行通用)的 SQL 查询吗?
如果 XML 是:
<?xml version="1.0" encoding="utf-16"?>
<EmployeeDetail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>MyName</Name>
<Age>20</Age>
<Salary>15000</Salary>
</EmployeeDetail>
我需要将所有 XML 列的 <Salary>DifferingSalary</Salary> 更新为 <Salary>10000</Salary>
试过了:
DECLARE @salary VARCHAR(10) = '10000';
UPDATE TABLE_NAME
SET [COLUMN_NAME].modify('replace value of
(/EmployeeDetail/Salary/text())[1]
with (sql:variable("@salary"))
');
输出:
无法调用 nvarchar(max) 上的方法。
注意:XML 以字符串形式存储在数据库中。
提前致谢!
【问题讨论】:
-
在提出问题时,您需要提供一个可重现的最小示例。请参考以下链接:stackoverflow.com/help/minimal-reproducible-example 请提供以下内容: (1) DDL 和样本数据填充,即 CREATE table(s) 加上 INSERT T-SQL 语句。 (2) 你需要做什么,即逻辑和你的代码尝试实现它。 (3) 基于上述#1 中的样本数据的期望输出。 (4) 你的 SQL Server 版本 (SELECT @@version;)
-
我已经添加了。请检查更新。
标签: sql sql-server xml