2010-05-27 120 views
3

我在想,我可以通過XML類型列的節點來查詢ORDER BY嗎?SQL Server:按XML列的節點排序

例如我有一個表

ID(int)| |數據(XML)

在數據列中存儲XML形式類似於此

<?xml?> 
<Data> 
    <SimpleOrderedValue>1</SimpleOrderedValue> 
    <ComplicatedInternals> 
     ... 
    </ComplicatedInternals> 
</Data> 

我想查詢此表由SimpleOrderedValue排序。我可以使用XML列在MS SQL Server 2008上執行此操作嗎?或者我可以使用CLR UDT來完成任務,但不需要額外的計算列,並且可以使Data列進行索引(以便更快地搜索)。

將不勝感激任何幫助。 謝謝。

回答

4

XQuery表達式如何;

select id, data 
from T 
    order by data.value('(/Data/SimpleOrderedValue)[1]', 'int') 
+0

感謝Alex,如果我在where子句中使用這個表達式,它會使用索引嗎? – 2010-05-31 13:56:13

+0

它應該這樣做,因爲XML只在ORDER BY中解析,所以它應該使用索引進行SELECT選擇,然後對結果進行排序,如果您查看可以查看的查詢計劃。 – 2010-06-02 09:51:14

+0

您可以創建XML索引:http://msdn.microsoft.com/en-us/library/ms191497.aspx – dyesdyes 2014-10-16 15:18:02