2013-02-19 47 views
1

我正嘗試使用我將給出的XML文件更新SQL Server數據庫。我正嘗試使用XQuery插入每個XML記錄的一部分,但難以將多個節點的值獲取到數據庫的相應列。下面是我使用的代碼:這使我使用XQuery從XML插入到SQL Server數據庫中

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 |空

3460 |空

2046 |空

2489 |無

我要尋找的結果:

FltNo | AvNo

1 | 2046

3460 | 2489

是否有人知道如何做到這一點?謝謝。

回答

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) 
+0

釘它!謝謝! – user2085955 2013-02-19 12:50:18

+0

@ user2085955不客氣,我很高興它幫助:) – 2013-02-19 12:50:45

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)') 
相關問題