私は今これに苦労しています: テキストが特定の変数値と等しい型指定されていない XML 列のノードの値をどのように置き換えますか? 出来ますか?
私のXML:
<attrs>
<attr>ManualInsert</attr>
<attr>ManualInsert2</attr>
<attr>ManualInsert4</attr>
<attr>ManualInsert8</attr>
</attrs>
私の試み:
DECLARE @OldValue Varchar(255) = 'ManualInsert'
DECLARE @NewValue Varchar(255) = 'ReplacedValue'
UPDATE
Labels
SET
Attributes.modify('replace value of (/attrs/attr/text())[1]
with
if ((/attrs/attr/text() = sql:variable("@OldValue")))
then sql:variable("@NewValue")
else () ')
WHERE
Id = 2000046
メッセージ: (0 row(s) affected)
DECLARE @OldValue Varchar(255) = 'ManualInsert'
DECLARE @NewValue Varchar(255) = 'ReplacedValue'
UPDATE
Labels
SET
Attributes.modify('replace value of (/attrs/attr[text() = sql:variable("@OldValue")])[1]
with sql:variable("@NewValue")')
WHERE
Id = 2000046
メッセージ:
Msg 2356, Level 16, State 1, Line 7
XQuery [Labels.Attributes.modify()]: The target of 'replace value of' must be a non-metadata attribute or an element with simple typed content, found 'element(attr,xdt:untyped) ?'
期待される結果:
<attrs>
<attr>ReplacedValue</attr>
<attr>ManualInsert2</attr>
<attr>ManualInsert4</attr>
<attr>ManualInsert8</attr>
</attrs>