我正在尝试使用我将给出的XML文件更新SQL Server数据库。我试图使用XQuery插入每个XML记录的一部分,但很难将多个节点的值获取到数据库的相应列。这是我正在使用的代码:
USE GOCO
GO
DECLARE @x XML
SET @x = '<Table6>
<Flt_x0020_No>1</Flt_x0020_No>
<AvNo>2046</AvNo>
<Date>2010-05-19T00:00:00+04:30</Date>
<Takeoff_x0020_Time>14:15</Takeoff_x0020_Time>
<Land_x0020_Time>15:09</Land_x0020_Time>
<Total_x0020_Flt_x0020_Time>0.9</Total_x0020_Flt_x0020_Time>
</Table6>
<Table6>
<Flt_x0020_No>3460</Flt_x0020_No>
<AvNo>2489</AvNo>
<Date>2013-01-15T00:00:00+04:30</Date>
<Takeoff_x0020_Time>8:40</Takeoff_x0020_Time>
<Land_x0020_Time>13:05</Land_x0020_Time>
<Total_x0020_Flt_x0020_Time>4.5</Total_x0020_Flt_x0020_Time>
</Table6>'
insert into Flight(
FltNo,
AvNo
)
select
Table1.Column1.value('text() [1]', 'varchar(50)'),
Table1.Column1.value('text() [2]', 'varchar(50)')
from @x.nodes('/Table6/Flt_x0020_No, /Table6/AvNo') As Table1(Column1)
这给了我:
FltNo | AvNo
1 | Null
3460 | Null
2046 | Null
2489 | Null
我正在寻找结果:
FltNo | AvNo
1 | 2046
3460 | 2489
有人知道怎么做吗?感谢。
答案 0 :(得分:0)
这是一个错字吗?
Table1.Column1.value('text() [1]', 'varchar(50)'),
Table1.Column1.value('text() [2]', 'varchar(50)')
似乎第二行应该说Column2
Table1.Column1.value('text() [1]', 'varchar(50)'),
Table1.Column2.value('text() [2]', 'varchar(50)')
答案 1 :(得分:0)
这有效:
select Table1.Column1.value('Flt_x0020_No[1]', 'varchar(50)'),
Table1.Column1.value('AvNo[1]', 'varchar(50)')
from @x.nodes('/Table6') As Table1(Column1)