2016-08-08 6 views
0

は、私は、次のXMLがあるとし実行する「の値を置き換え」の使用:私はに更新したいと思います部分的な置き換え

<Configuration> 
    <Formula>{X} * {Y} * {Z}</Formula> 
</Configuration> 

Formula要素の値ではなく、に値全体を置き換えます。私が唯一たい、もちろん

<Configuration> 
    <Formula>{LENGTH} * {Y} * {Z}</Formula> 
</Configuration> 

は例えば、私は、要素の全体の値を変更するreplace value ofメソッドを使用することができますが、私は次のようなものがあるで終わるしたいと思いますどのようなこれを行うには、要素の値に「{X}」という値を見つけます(思考、検索、置換)。

これはT-SQLのXMLメソッドを使用して可能ですか?もしそうなら、誰かが私を正しい方向に向けることができますか?

+0

は、XMLメソッドで設定されている結果をXMLを再作成しますか? { {X} * {Y} * {Z} '、' {X} '、' {LENGTH} ') 'はあなたの望むことをしません。 – scsimon

+0

表の列の型はXMLです。私はあなたの提案を試み、それを動作させることができますが、私はXML列をREPLACE関数の最初のパラメータとしてキャストする必要があります。私はこれをやりたいとは思っていません(読んで、それが効率的かどうかわかりません)。 –

+0

この質問は解決されますか?さらに助けが必要ですか?私に1つのヒントを許してください:ベスト・アンサーの投票カウンターの下で受け入れチェックをチェックするのはあなたの親切です。これは、1)この問題を解決済みとマークします。2)フォロワーが最良の解決策を見つけるのをより簡単にします。3)回答者にポイントを払います。一度あなたが15ポイントの国境を越えたら、さらにあなたは貢献に投票するように求められます。これは、ありがとうと言います。ハッピーコーディング! – Shnugo

答えて

0

これはどうですか?

このコードは、派生テーブルであなたの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> 
+0

式に{YX}のようなものがある場合、SELECT REPLACE(式、N '{X}'、N '{Length}')と書くことができます –

関連する問題