2017-09-05 10 views
0

XMLコンテンツを持つnvarchar列があります。 XMLにキャストする必要があるかどうかは不明です。すべてのXMLコンテンツは、レコードの数を除いて同じようにフォーマットされた最初のノードは、必要がある場合、属性が追加変更する必要がありますSQLクエリの更新XMLコンテンツのnvarcharがノードに不足している属性を追加します

<MyFirstNode SomeAttribute="value" SomeOtherAttribute="anothervalue"> 

更新をする:

<MyFirstNode SomeAttribute="value" AddThisAttribute="nicevalue" SomeOtherAttribute="anothervalue"> 

どのように私はすべて更新することができますAddThisAttribute = "nicevalue"で必要なノードすべて同じ属性と値が必要です。

+0

XMLが含まれていると、列がNVARCHARでありXMLでない理由がありますか?私はあなたの選択肢がXMLに変換され、 'modify( 'AddThisAttribute {(" nicevalue ")}を(*)[1]')関数に挿入するか、(おそらくは複雑な)' STUFF'ステートメントを書くことになると思いますあなたの列のままです。 – ZLK

答えて

1

これが実際にXMLとして解釈される場合は、属性のリストの中央にAddThisAttribute = "nicevalue"を挿入する必要はありません。 1つのオプションの簡単な

UPDATE myTable 
SET XMLColumn = REPLACE(XMLColumn, '<MyFirstNode ', '<MyFirstNode AddThisAttribute="nicevalue" ') 

を行うことです、これは特に、各行におけるSomeAttributeとSomeOtherAttribute変更する場合は、値を挿入しようとするよりも簡単かもしれません。 「SomeOtherAttributeが」MyFirstNode以外の他のノードの種類に表示されている場合、これは望ましくない変更を加えるかもしれませんが

代わりに、

UPDATE myTable 
SET XMLColumn = REPLACE(XMLColumn, ' SomeOtherAttribute=', ' AddThisAttribute="nicevalue" SomeOtherAttribute=') 

は、仕事ができます。

+0

これを正解として設定しましたが、これはnvarcharであり、XML列として更新するにはXMLとしてキャストする必要があると思います。ありがとう! –

関連する問題