xmlフィールド(SQL Server)では、ソーステーブルと条件に基づいて、すべてのサブノードにノードを追加する必要があります。 これは私のXMLデータである:すべての<name>
についてはSQL ServerでXQueryを使用してxmlサブノードを変更する方法
declare @X table (XMLDATA xml)
insert @X values('
<row>
<node>
<name>Francesco</name>
</name>
<node>
<label>Alessandro</name>
</node>
<node>
<name>Daniele</name>
</node>
</row>')
、私はノード<number>
を追加します。表@T
で書かれている番号と名前の一致:
declare @T table (name varchar(20), number int)
insert @T values
('Alessandro', 24)
,('Francesco', 10)
,('Daniele', 16)
私はXMLDATA.modify
を使用するノードを更新するには、と私は右のノードを選択するために、XPathの条件を使用します。
update @X set XMLDATA.modify('insert element number {sql:column("number")} as last into (row/node[name=sql:column("name")])[1]')
from @X
cross join @T
作品上記のクエリ@T
(この例ではAlessandro/24)の最初の行のみです。他の2行の@T
は無視されます。 node
にnumber
を追加する必要があります。
<row>
<node>
<name>Francesco</name>
</node>
<node>
<name>Alessandro</name>
<number>24</number>
</node>
<node>
<name>Daniele</name>
</node>
</row>
Ronak Patelの回答が良い解決策(私が評価した)であっても、 'fieldxml.modify()'がどのように動作し、行内の多くのノードを更新するかを知りたいと思います。私が間違っていて、「正解」と表示されるのを助ける回避策ですか? – Radioleao
有効なポイント...あなたのコメントの下にコメントしました*私は単にサンプルサブセット*を書きます(サンプルにあてはまる出力を追加してください)。これはあなたに正確な答えを与えるのに役立ちます。 – Shnugo
私は、さまざまなレベルで何百ものノードがあると書いています。私はMSのSQL構文を尋ねる実際の例を投稿する必要がありますか? – Radioleao