2017-01-16 11 views
1

XML型変数@XMLDataがあります。XQueryを使用してXMLノードを更新します。

私は ID 1.

である私は、このよう

SET @tempXML = @xmlData 
SELECT @xmlData; 

SET @tempXML.modify('replace value of (/ArrayOfResult/Result/Text/text())[1]  with ("This text is okay")'); 

SELECT @tempXML 

を試してみました。しかし、ここで、私はノードに言及しているノードのテキストを更新したい

DECLARE @xmlData XML 
DECLARE @tempXML XML 

SET @xmlData =N'<ArrayOfResult> 
<Result> 
    <ID>1</ID> 
    <Text>This text should be updated to new text</Text> 
</Result> 
<Result> 
    <ID>2</ID> 
    <Text>This text is okay</Text> 
</Result> 
</ArrayOfResult>'; 

index [1]は最初のノードを更新する。 テキストの要素をID = 1に更新するにはどうすればよいですか?

答えて

1

このようにそれを試してみてください。

DECLARE @xmlData XML 
DECLARE @tempXML XML 

SET @xmlData =N'<ArrayOfResult> 
<Result> 
    <ID>1</ID> 
    <Text>This text should be updated to new text</Text> 
</Result> 
<Result> 
    <ID>2</ID> 
    <Text>This text is okay</Text> 
</Result> 
</ArrayOfResult>'; 

SET @tempXML = @xmlData 
SELECT @xmlData; 

--youがIDに

DECLARE @id INT=1; 

SET @tempXML.modify('replace value of (/ArrayOfResult/Result[ID=sql:variable("@id")]/Text/text())[1]  with ("This text is okay")'); 

SELECT @tempXML 
+0

を渡すために変数を使用することができますが、あなたに男をありがとう! :)。それは魅力のように働く。 –

+1

@ NoorAShuvo、ちょうど1つのヒント:置き換えたいテキストを変数で紹介することもできます。値が結果セットの列から取得された場合は、 'sql:column(" ColumnName ")' – Shnugo

関連する問題