假设我有以下XML:
<Configuration>
<Formula>{X} * {Y} * {Z}</Formula>
</Configuration>
我想更新 Formula
元素的值,而不是替换整个值。
例如,我可以使用replace value of
方法更改元素的整个值,但我最终想要的是以下内容:
<Configuration>
<Formula>{LENGTH} * {Y} * {Z}</Formula>
</Configuration>
当然,我只想在元素值(想想,搜索和替换)中找到值“{X}”的地方完成此操作。
这是否可以使用T-SQL中的XML方法?如果是这样,有人能指出我正确的方向吗?
答案 0 :(得分:0)
这个怎么样?
此代码将在派生表中转换XML并从那里重新创建XML ...
DECLARE @xml XML=
'<Configuration>
<Formula>{X} * {Y} * {Z}</Formula>
<Formula>{A} * {Y} * {Z}</Formula>
<Formula>{A} * {X} * {X}</Formula>
</Configuration>';
DECLARE @replX NVARCHAR(100)=N'LENGTH';
WITH AllFormulas AS
(
SELECT f.value('.','nvarchar(max)') AS Formula
FROM @xml.nodes('Configuration/Formula') AS A(f)
)
SELECT REPLACE(Formula,N'X',@replX)
FROM AllFormulas
FOR XML PATH('Formula'),ROOT('Configuration')
结果
<Configuration>
<Formula>{LENGTH} * {Y} * {Z}</Formula>
<Formula>{A} * {Y} * {Z}</Formula>
<Formula>{A} * {LENGTH} * {LENGTH}</Formula>
</Configuration>