0

データ型がxmlの「ServiceConfig」という名前の列があるテーブルがあります。

以下のようなxmlのレコードがあります:

<Config>
  <services>
    <service name="pro" />
    <service name="postdata" />
  </services>
</Config>

今、私はと交換<service name="pro" />したい<service name="pro" username="u" password="p"/>。したがって、結果の XML は次のようになります。

<Config>
  <services>
    <service name="pro" username="u" password="p"/>
    <service name="postdata" />
  </services>
</Config>

どうすれば達成できますか?

4

1 に答える 1

2

1 つの方法は、このような新しい属性を追加することです...

DECLARE @xmltest TABLE (ServiceConfig XML)
DECLARE @username VARCHAR(15) = 'u'
DECLARE @password VARCHAR(15) = 'p'
DECLARE @xml xml

INSERT @xmlTest values ('<Config>
                           <services>
                             <service name="pro" />
                             <service name="postdata" />
                           </services>
                         </Config>')

SELECT @xml = ServiceConfig from @xmltest

SET @xml.modify('insert (attribute username {sql:variable("@username")}, 
                         attribute password {sql:variable("@password")}) 
                         as last into (/Config/services/service)[1]')

UPDATE @xmltest SET ServiceConfig = @xml

SELECT * FROM @xmltest

ここをクリックして、上記のコードの SQL Fiddle デモに移動します

于 2013-05-21T11:15:33.890 に答える