在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參數的最好方法是什麼?
編輯
我想我需要表達我的回報我期待在這裏。下面的腳本代碼是表什麼,我需要在這裏:
對於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
是多少CHD
節點根據Room
節點。還有,我有多少個節點,我在這裏有很多表格行。
至於應該怎麼看,看下面的圖片:
其實,這個代碼是四星級酒店搜索查詢。所以,我需要 來處理我從XML參數獲得的這些值來查詢我的表 並返回可用房間。我說這個,因爲它可以幫助你們看到它通過 。我不是在尋找 房間預訂系統的完整代碼。那太自私了。
@marc_s感謝的標題觸摸。我不確定這是一個好題目。如果您可以提供更好的標題,請隨時更改它。 – tugberk
你想讓參數目標表看起來像什麼?你關心孩子的信息,或者每個房間的ADT數量是多少? NumberofADT是子行數? –
您能否更清楚地描述所需的輸出 - 您需要哪些值以及如何使用它們? –