2016-05-16 5 views
1

SQL Server 2005に次の簡略化されたXMLでXML列があります。SQL Server XQuery - 閉じた要素のテキストを変更します。

+----------+------------------+ 
| RecordID | ValueXML   | 
+----------+------------------+ 
| 1  | <value>x</value> | 
|   |     | 
+----------+------------------+ 

私はyにその値を変更したい場合は、私は、次のSQL文を使用します。

update ValueTable 
set ValueXML.modify(' 
    replace value of (/value/text())[1] 
    with ("y")') 
where RecordID = 1 

これは問題なく動作します。 xyになります。 valueに何も設定されていないと問題が発生します。

update ValueTable 
set ValueXML.modify(' 
    replace value of (/value/text())[1] 
    with ("")') 
where RecordID = 1 

これが発生すると、表は次のようになります。

ここで値を設定できなくなりました。置換値照会は正常に実行されますが、変更はありません。

閉じたXML要素のテキストを設定するにはどうすればよいですか?要素の "unclose"することは可能ですか?

答えて

2

ありがとうございます@BoogaWooga正しい方向に私を指しています。私は2つの声明で私の交換を行うことができました。

まず、要素が閉じられていることを確認しました。このステートメントは、要素が閉じられているかどうかに関係なく機能します。

update ValueTable 
set ValueXML.modify(' 
    replace value of (/value/text())[1] 
    with ("")') 
where RecordID = 1 

は今、私は要素が閉じている知っていることを、私は、閉じた要素に値を挿入するinsert textを使用しています。

update ValueTable 
set ValueXML.modify(' 
    insert text{"x"} 
    into (/value[1])') 
where RecordID = 1 
+0

こんにちはダンゴワン、私はあなたが解決策を見つけたことを嬉しく思っています。そして、@BoogaWoogaに「ありがとう」と言っていいです。しかし、答えを投票する方がずっといいです。投票と受け入れは、ありがとうと言います。 [これを読んでください:誰かの回答](http://stackoverflow.com/help/someone-answers)。 – Shnugo

+0

@ Shnugo私はそれを投票したでしょうが、答えの内容は私の質問に答えませんでした。答えの内容は「あなたはそのような値を挿入できません」と言っています。それは本当ですが、値を挿入することができます。あなたはちょっと違う必要があります。私は「違った」ものが何かを探していました。 – dangowans

+0

@ Shnugoもし私の意見が正しいと思うのであれば、より多くの票を持っているかもしれません。あるいは私の答えを正しいものにすることができたら、私は助けてくれた回答に投票します。それらの答えを自分のものよりも高くすることを好まない。 – dangowans

2

テキストを置き換えようとしているのに置換するテキストがないため、そのような値を挿入できないため、実行されますが機能しません。

これはhereと同じ問題があるようです。

関連する問題