-1

1つのテーブルにXMLフィールドがあります。そのフィールドを更新したいと思います。XML形式は次のとおりです。

<data><user>abcd</user></data>

abcd値をに変更したいefgh。どうすればこれを達成できますか?

4

1 に答える 1

1

定数、変数、または既存の列情報を使用して更新する方法を示すいくつかの例を次に示します。

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
于 2012-12-07T23:18:47.897 に答える