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 中的值添加到我的表中?

如果我没记错的话,我必须做一个交叉申请,但我不知道该怎么做。

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 回答