3
나는 이제 다음과 같이 고민하고 있습니다. 텍스트가 특정 변수 값과 같은 형식화되지 않은 XML 열의 노드 값을 어떻게 대체합니까? 가능한가?XML의 노드 값을 동적으로 바꾸기 DML
내 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>
두 번째 시도가 실제로 그냥 교체해야 할 텍스트가()로 지정없는
훌륭합니다. 이걸 어디서 배웠 니? – Eon
[여기] (http://msdn.microsoft.com/en-us/library/ms190675.aspx) 및 [여기] (http://en.wikipedia.org/wiki/Trial_and_error) :)에서. –
자살 시간. 나는 그것을 어떻게 놓쳤는가?^_^나는 그 페이지 중 하나에있었습니다. 감사합니다. – Eon