Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sort Bullets in Database

I have a column [datatype:varchar(50)] in database (SQL Server 2008) having Values as shown below:

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

these are numbered bullets for my records I need to sort them as grouping all the records in sequence 1,1.1,1.1.1,2,3.1,4,10.1,11.1....

Please help me in this regard.

like image 976
Nag Avatar asked Sep 13 '12 13:09

Nag


1 Answers

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

Is that what you need?

like image 189
Martin Smith Avatar answered Mar 24 '23 18:03

Martin Smith