按特殊条件订购

Order by with special condition

我有 Table1 和 Column1:

Column1|
-------|
1 aaaa|
2 aaaa|
3 aaaa|
4 aaaa|
10 aaaa|
6 aaaa|
7 aaaa|
8 aaaa|
9 aaaa|
5 aaaa|

如果我查询:

Select * 
FROM Table1
Order By Column1

输出为:

1 aaaa
10 aaaa
2 aaaa  
3 aaaa
4 aaaa  
5 aaaa    
6 aaaa    
7 aaaa    
8 aaaa    
9 aaaa    

我想要的是:

1 aaaa 
2 aaaa  
3 aaaa  
4 aaaa   
5 aaaa    
6 aaaa    
7 aaaa    
8 aaaa    
9 aaaa
10 aaaa

我知道我可以通过在数字 1 前面加一个 0 直到 9 来解决它。 但不幸的是我不能在数据中这样做 - 它必须在查询或其他东西中

使用"ASC"如下

Select * FROM `Table1` ORDER BY `Column1` ASC 

试试这个:

Select *
FROM Table1
Order By cast(SUBSTRING (Column1,1,charindex(' ',Column1)-1) as int)

请检查这个DEMO

知道了:

SELECT C 
FROM Table_1 
ORDER BY CAST(Left(Column1, CHARINDEX(' ', Column1)) AS int)

谢谢大家