Order by numeric values in SQL ascending
I'm trying to get this output.
MDT 1
MDT 2
MDT 3
MDT 11
MDT 44
but, The values are ordered alphabetically, so 123 comes before 2.
example :
MDT 1
MDT 11
MDT 156
MDT 2
MDT 3
MDT 303
MDT 44
and so on.
I'm use this code, but it seem didn't work.
SELECT * FROM file ORDER BY ABS(ID) ASC
How can I solve this?
If your ID is always going to contain the prefix as MDT
, then you can use this, to sort as per your requirement:
SELECT * FROM File
ORDER BY CAST(replace(ID, 'MDT ', '') AS UNSIGNED) ASC
SQLFiddle demo
Try Like this it will sort based on numeric :
select substr(id,4)*1 from file order by substr(id,4)*1
It will gives
1
2
3
11
44
...
If You want all fields try the below query ("substr(id,4)" or "substr(id,5)") based on your string length (ex: id= proj-001911 --> take SUBSTR( id, 6 ) *1) )
select * from file order by substr(id,4)*1
试试这个片段
SELECT * FROM file ORDER BY ID + 0 ASC
链接地址: http://www.djcxy.com/p/11562.html
上一篇: 共享存储在内部存储器中的图像
下一篇: 按SQL升序中的数值排序