1

提供されるXMLファイルを使用してSQLServerデータベースを更新しようとしています。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|ヌル

3460|ヌル

2046|ヌル

2489|ヌル

私は次の結果を探しています:

FltNo | AvNo

1 | 2046

3460 | 2489

誰かがこれを行う方法を知っていますか?ありがとう。

4

2 に答える 2

0

これはタイプミスでしたか?

Table1.Column1.value('text() [1]', 'varchar(50)'),
Table1.Column1.value('text() [2]', 'varchar(50)')

2行目は言うべきだと思われるColumn2

Table1.Column1.value('text() [1]', 'varchar(50)'),
Table1.Column2.value('text() [2]', 'varchar(50)')
于 2013-02-19T07:07:57.923 に答える
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)
于 2013-02-19T07:35:52.410 に答える