SQL Server 2008 R2では、XML値をテーブルとして読み取ろうとしています。XMLパラメータからテーブルへのSQL Server - オプションの子ノードでの作業
はこれまでのところ、私はここにいる:あなたが見ることができるように
DECLARE @XMLValue AS XML;
SET @XMLValue = '<SearchQuery>
<ResortID>1453</ResortID>
<CheckInDate>2011-10-27</CheckInDate>
<CheckOutDate>2011-11-04</CheckOutDate>
<Room>
<NumberOfADT>2</NumberOfADT>
<CHD>
<Age>10</Age>
</CHD>
<CHD>
<Age>12</Age>
</CHD>
</Room>
<Room>
<NumberOfADT>1</NumberOfADT>
</Room>
<Room>
<NumberOfADT>1</NumberOfADT>
<CHD>
<Age>7</Age>
</CHD>
</Room>
</SearchQuery>';
SELECT
Room.value('(NumberOfADT)[1]', 'INT') AS NumberOfADT
FROM @XMLValue.nodes('/SearchQuery/Room') AS SearchQuery(Room);
、Room
ノードは時々CHD
子ノードを取得しますが、時にはません。
このXML値がストアドプロシージャパラメータとして取得されているとします。だから、私はデータベーステーブルを照会するために値を扱う必要があります。このXMLパラメータを完全に読み取る最良の方法は何でしょうか?私は私がここにお返しに何を期待してい表現する必要があると思う
EDIT
。以下のスクリプトコードは、私がここで必要なもののテーブルです:XML値の場合
私は挿入T-SQLの下に、上記の提供している適しています。
INSERT INTO @table VALUES(1453, '2011-10-27', '2011-11-04', 2, 2, '10;12');
INSERT INTO @table VALUES(1453, '2011-10-27', '2011-11-04', 1, 0, NULL);
INSERT INTO @table VALUES(1453, '2011-10-27', '2011-11-04', 1, 1, '7');
CHDCount
は数のためでありますノード番号がRoom
ノード以下のCHD
ノードです。また、どのくらいの数Room
ノード、私はここにいる多くのテーブル行。それがどのように見えるべきかについては
、下図を参照してください。
を実際に、このコードは、ホテル予約、検索クエリのためです。だから、私はテーブル を照会し、利用可能な部屋を返すためにXMLパラメータから得たこれらの値を扱うには が必要です。多分それが役に立ったので、私はこれを伝えています あなたはそれを見てみましょう。私は 部屋予約システムの完全なコードを探していません。それはとても利己的です。
を。私はそれがここで良いタイトルであるとは確信していません。より良いタイトルを提供できる場合は、plsを自由に変更してください。 – tugberk
目的地のテーブルの表をどのように表示しますか?子供の情報を気にかけますか、または1部屋あたりのADTの数を減らしますか? NumberofADTは子行の数ですか? –
必要な出力とその使用方法を明確に説明できますか? –