0

我有一个格式为 XML 的数据:

<Display>
 <StoreCode>1234</StoreCode>
 <TerminalID>02</TerminalID>
 <TrnsNo>0123456789</TrnsNo>
 <Date>03-05-2013</Date>
 <Time>11:30</Time>
 <Vdtls>
  <VID>VVB0000015</VID>
  <VID>VVB0000016</VID>
 </Vdtls>
</Display>

我已将此 xml 数据存储在表的列中。现在我想解析这个 XML 并将其存储在另一个具有结构的表中。

 CREATE TABLE [dbo].[temp_XMLreceivedData]
 (
[StoreCode] [int] NULL,
[TerminalId] [int] NULL,
[TransactionNo] [varchar](10) NULL,
[RequestDate] [date] NULL,
[RequestTime] [char](5) NULL,
[VoucherDetails] [varchar](10) NULL
 ) 

如何做到这一点?

4

2 回答 2

0

我的事情整个代码如下

declare @XmlTbl xml

select top(1) @XmlTbl=cast(cast(xmldata as nText) as xml) from test_xml

insert into temp_XMLreceivedData
select 
a.b.value('(StoreCode/node())[1]','VARCHAR(10)') ,
a.b.value('(TerminalID/node())[1]','VARCHAR(100)'),
a.b.value('(TrnsNo/node())[1]','VARCHAR(100)') ,
a.b.value('(Date/node())[1]','VARCHAR(100)') ,
a.b.value('(Time/node())[1]','VARCHAR(100)') ,
a.b.value('(Vdtls/VID/node())[1]','VARCHAR(100)') 
from @XmlTbl.nodes('Display') as a(b)

此代码仅适用于一个数据。如果插入数据的所有数据,则循环表

于 2013-06-08T04:56:33.893 回答
0

试试下面的代码

insert into temp_XMLreceivedData
select 
a.b.value('(StoreCode/node())[1]','VARCHAR(10)') ,
a.b.value('(TerminalID/node())[1]','VARCHAR(100)'),
a.b.value('(TrnsNo/node())[1]','VARCHAR(100)') ,
a.b.value('(Date/node())[1]','VARCHAR(100)') ,
a.b.value('(Time/node())[1]','VARCHAR(100)') ,
a.b.value('(Vdtls/VID/node())[1]','VARCHAR(100)') 
from @XmlTbl.nodes('Display') as a(b)
于 2013-06-06T08:22:57.550 回答