0

私は次のものを持っています:

DECLARE @XML XML
  SET @XML = '<?xml version="1.0" encoding="utf-8"?>
<member xmlns="http:...xsd" xmlns:xsi="http:...XMLSchema-instance">
  <Person>
    <Name>Jorge</Name>
    <LastName>Bond</LastName>
  </Person>
  <Person>
    <Name>Jorge</Name>
    <LastName>Bond</LastName>
  </Person>
</member>

次の列を持つテーブルがあります。

  • メンバー
  • 名前
  • 苗字

XML からテーブルに値を追加するにはどうすればよいですか?

私が間違っていなければ、CROSS APPLYを実行する必要がありますが、これを行う方法がわかりません。

4

1 に答える 1

1

次のようなものを使用できます。

DECLARE @XML XML
SET @XML = '<?xml version="1.0" encoding="utf-8"?>
<member xmlns="http://testxsd" xmlns:xsi="http:...XMLSchema-instance">
  <Person>
    <Name>Jorge</Name>
    <LastName>Bond</LastName>
  </Person>
  <Person>
    <Name>Jorge</Name>
    <LastName>Bond</LastName>
  </Person>
</member>'

;WITH XMLNAMESPACES(DEFAULT 'http://testxsd')
SELECT
    PersonName = XPerson.value('(Name)[1]', 'varchar(50)'),
    PersonLastName = XPerson.value('(LastName)[1]', 'varchar(50)')
FROM @XML.nodes('/member/Person') AS XTbl(XPerson)

次の出力が得られます。

ここに画像の説明を入力

もちろん、そのデータをテーブルに挿入する場合は、次を使用できます。

;WITH XMLNAMESPACES(DEFAULT 'http://testxsd')
INSERT INTO dbo.Person(Name, LastName)
   SELECT
       PersonName = XPerson.value('(Name)[1]', 'varchar(50)'),
       PersonLastName = XPerson.value('(LastName)[1]', 'varchar(50)')
   FROM @XML.nodes('/member/Person') AS XTbl(XPerson)
于 2013-07-27T06:47:02.767 に答える