2012-09-13 11 views
6

ho una colonna [datatype:varchar(50)] nel database (SQL Server 2008) con valori come illustrato di seguito:Ordinare i Bullets nel database

1 
2 
1.1.11 
4.1 
5 
2.1 
1.1 
4 
1.2.1 
4.2.2 
4.3 
4.2 
4.3.1 
4.2.1 
11.2 
1.2.4 
4.4 

questi sono numerati proiettili per i miei dischi ho bisogno di ordinare loro come raggruppare tutti i record in sequenza 1,1.1,1.1.1,2,3.1,4,10.1,11.1....

Please help me in questo senso.

+0

E a proposito di "ordine per nome_colonna"? – Leri

+2

Does 'ORDER BY CAST ('/' + YourColumn + '/' AS HIERARCHYID)' fa quello che ti serve? –

+0

AFAIK eseguendo un ordine nella colonna, ordinerà in ordine ascendente "legale". Hai bisogno di concatenare tutti i valori in una singola stringa? – StuartLC

risposta

17
WITH T(YourColumn) AS 
(
SELECT '1' UNION ALL 
SELECT '2' UNION ALL 
SELECT '1.1.11' UNION ALL 
SELECT '4.1' UNION ALL 
SELECT '5' UNION ALL 
SELECT '2.1' UNION ALL 
SELECT '1.1' UNION ALL 
SELECT '4' UNION ALL 
SELECT '1.2.1' UNION ALL 
SELECT '4.2.2' UNION ALL 
SELECT '4.3' UNION ALL 
SELECT '4.2' UNION ALL 
SELECT '4.3.1' UNION ALL 
SELECT '4.2.1' UNION ALL 
SELECT '11.2' UNION ALL 
SELECT '1.2.4' UNION ALL 
SELECT '4.4' 
) 
SELECT * 
FROM T 
ORDER BY CAST('/' + YourColumn + '/' AS HIERARCHYID) 

Returns

YourColumn 
---------- 
1 
1.1 
1.1.11 
1.2.1 
1.2.4 
2 
2.1 
4 
4.1 
4.2 
4.2.1 
4.2.2 
4.3 
4.3.1 
4.4 
5 
11.2 

E 'questo quello che ti serve?

+0

Sì .. Grazie mille .. Questo è ciò di cui ho bisogno .. molto molto utile – Nag

Problemi correlati