2010-05-27 9 views
3

Je me demandais puis-je ORDER BY ma requête par le noeud d'une colonne typée XML?SQL Server: ordre par le noeud de la colonne XML

Par exemple, j'ai une table

ID (int) | Les données (XML)

Où colonne stocke les données XML sous forme similaire à ce

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

Je veux interroger ce tableau commandé par SimpleOrderedValue. Puis-je le faire sur MS SQL Server 2008 avec une colonne XML? Ou puis-je le faire en utilisant CLR UDT, mais sans colonne calculée additionnelle et d'une manière telle que la colonne de données a été indexée (pour une recherche plus rapide).

Apprécierez toute aide. Merci.

Répondre

4

Que diriez-vous d'une expression XQuery;

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

Merci Alex, utilisera-t-il des index si j'utilise cette expression dans la clause where? –

+0

Il devrait faire comme le XML est seulement analysé dans le ORDER BY, donc il devrait SELECT en utilisant un index puis juste trier le résultat, si vous regardez le plan de requête, vous serez en mesure de voir. –

+0

Vous pouvez créer des index XML: http://msdn.microsoft.com/fr-fr/library/ms191497.aspx – dyesdyes

Questions connexes