1つのテーブルにXMLフィールドがあります。そのフィールドを更新したいと思います。XML形式は次のとおりです。
<data><user>abcd</user></data>
abcd
値をに変更したいefgh
。どうすればこれを達成できますか?
1つのテーブルにXMLフィールドがあります。そのフィールドを更新したいと思います。XML形式は次のとおりです。
<data><user>abcd</user></data>
abcd
値をに変更したいefgh
。どうすればこれを達成できますか?
定数、変数、または既存の列情報を使用して更新する方法を示すいくつかの例を次に示します。
declare @x table(i bigint not null identity(1,1), x xml, y nvarchar(64))
declare @z nvarchar(64) = 'sql variable data'
insert @x select '<data><user>abcd</user></data>', 'sql column data 1'
insert @x select '<data><user>abcd</user></data>', 'sql column data 2'
insert @x select '<data><user>abcd</user></data>', 'sql column data 3'
update @x
set x.modify('replace value of (/data/user/text())[1] with ''efgh''')
where i=1
update @x
set x.modify('replace value of (/data/user/text())[1] with sql:column(''y'')')
where i=2
update @x
set x.modify('replace value of (/data/user/text())[1] with sql:variable(''@z'')')
where i=3
select * from @x
出力:
i x y
1 <data><user>efgh</user></data> sql column data 1
2 <data><user>sql column data 2</user></data> sql column data 2
3 <data><user>sql variable data</user></data> sql column data 3