1

我收到类似的 XML 数据

<t>
  <ID>8</ID>
  <FirstName>name 8</FirstName>
  <LastName>surname 8</LastName>
  <DateOfBirth>1963-05-23T00:00:00</DateOfBirth>
</t>

在 SQL Server 存储过程中。有不同的 xml 数据格式(字段编号和字段名称可以不同)。现在,我应该提取每个字段及其值并将每个字段/值作为单独的记录插入表中。

是否有示例如何使用 TSQL 执行此操作?

4

2 回答 2

2

您可以轻松扫描 XML - 如果它始终位于<t>根节点下并且始终只有一层深度:

DECLARE @input XML = '<t>
  <ID>8</ID>
  <FirstName>name 8</FirstName>
  <LastName>surname 8</LastName>
  <DateOfBirth>1963-05-23T00:00:00</DateOfBirth>
</t>'

SELECT
    FieldName = nodes.value('local-name(.)', 'varchar(50)'),
    FieldValue = nodes.value('(.)[1]', 'varchar(50)')
FROM
    @input.nodes('/t/*') AS Tbl(nodes)

输出是:

在此处输入图像描述

但这实际上取决于您现在要如何处理该数据 - 一旦您从 XML 中检索到它......您的预期目标表的结构是什么样的?

于 2012-10-25T09:28:06.237 回答
0

@x你的xml在哪里

insert yourtable (ID, Firstname, Lastname, DOB)
select 
    @x.value('(/t/ID)[1]','int'),
    @x.value('(/t/FirstName)[1]','varchar(50)'),
    @x.value('(/t/LastName)[1]','varchar(50)'),
    @x.value('(/t/DateOfBirth)[1]','datetime')

请参阅http://msdn.microsoft.com/en-us/library/ms178030(v=sql.100).aspx

于 2012-10-25T09:26:48.960 回答