sql - 在 SQL Server 中更新 XML 数据
问题描述
我需要将abc_NumberOfHoldDays
值更新为空,如下所示。我无法运行查询 - 有人可以帮我检查查询以更新 XML 数据吗?
XML:
<Plans>
<Plan>
<Coverages>
<Coverage>
<Answers>
<AnswersList>
<Entry key="abc_NumberOfHoldDays" type="System.String">
<value>11</value>
</Entry>
</Coverages>
</Coverage>
</Answers>
</AnswersList>
</plan>
<Plan>
<Coverages>
<Coverage>
<Answers>
<AnswersList>
<Entry key="abc_NumberOfHoldDays" type="System.String">
<value>12</value>
</Entry>
</Coverages>
</Coverage>
</Answers>
</AnswersList>
</plan>
我的查询:
DECLARE @COUNT INT
DECLARE @xml xml
SET @COUNT = (SELECT Data.value ('count((/*/Plans/Plan/Coverages/Coverage/Answers/AnswersList/Entry[@key="abc_NumberOfHoldDays"]/value))', 'INT') FROM table1)
SET @xml = (SELECT Data FROM table1)
--SELECT @COUNT
--SELECT @xml
WHILE @COUNT > 0
BEGIN
SET @xml.modify('replace value of (//Plans/Plan/Coverages/Coverage/Answers/AnswersList/Entry[@key="abc_NumberOfHoldDays"][sql:variable("@COUNT")]/text())[1] with
(
(/Plans/Plan/Coverages/Coverage/Answers/AnswersList/Entry[@key="abc_NumberOfHoldDays"][sql:variable("@COUNT")])[1] =''
)
')
SET @COUNT = @COUNT - 1;
END
解决方案
因为需要使用双引号。
declare @xml xml='
<Plans>
<Plan>
<Coverages>
<Coverage>
<Answers>
<AnswersList>
<Entry key="abc_NumberOfHoldDays" type="System.String">
<value>11</value>
</Entry>
</AnswersList>
</Answers>
</Coverage>
</Coverages>
</Plan>
<Plan>
<Coverages>
<Coverage>
<Answers>
<AnswersList>
<Entry key="abc_NumberOfHoldDays" type="System.String">
<value>12</value>
</Entry>
</AnswersList>
</Answers>
</Coverage>
</Coverages>
</Plan>
</Plans>';
SET @xml.modify('
replace value of (//Entry[@key="abc_NumberOfHoldDays"]/value[1]/text())[1] with ""
');
select @xml;
或者可以完全删除“价值”元素。
SET @xml.modify('delete //Entry[@key="abc_NumberOfHoldDays"]/value');
select @xml;
推荐阅读
- python - 如何保持登录状态,MySQL+Python 3+ tkinter
- pyspark - 我在 pypsark 中遇到错误,指出:TypeError: 'Column' object is not callable
- android - 如何在 Angular NativeScript Android 应用程序中自定义带有动画的主启动画面?
- google-analytics - GA 通过单击 GA 事件跟踪的按钮来触发新会话
- ctypes - 从 .whl 文件成功安装 Windows 10 Rtree,但运行代码时出错
- laravel - 试图从另一个表中获取引用的 Laravel Eloquent 数据
- spyder - 将 Spyder 更新到 4.0 后出现错误 qtconsole
- r - 如何在 R 中重构数据框(行到列)
- unreal-engine4 - 蓝图每次编译都会重置变量值
- java - Java 正则表达式导致空指针异常错误