2012-09-13 47 views
6

我在数据库(SQL Server 2008),其价值有一列[datatype:varchar(50)],如下图所示:排序子弹

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 

这些编号的子弹为我的记录 我需要将它们分类为分组中的所有记录在序列​​

请帮我在这方面。

+0

怎么样'order by column_name'? – Leri

+2

'ORDER BY CAST('/'+ YourColumn +'/'AS HIERARCHYID)'做你需要的吗? –

+0

AFAIK在您的专栏上执行'order by'命令将按升序“合法”标题类型顺序进行排序。你是否需要将所有值连接成单个字符串? – StuartLC

回答

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) 

返回

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 

是你需要什么?

+0

是的..非常感谢..这是我需要..非常非常有帮助 – Nag