我收到像
这样的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如何做到这一点的例子?
答案 0 :(得分: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中检索到它......您的目标表的结构是什么样的?
答案 1 :(得分: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