按SQL升序中的数值排序
我试图得到这个输出。
MDT 1
MDT 2
MDT 3
MDT 11
MDT 44
但是,这些值按字母顺序排列,所以123在2之前。
例如:
MDT 1
MDT 11
MDT 156
MDT 2
MDT 3
MDT 303
MDT 44
等等。
我使用这个代码,但它似乎没有工作。
SELECT * FROM file ORDER BY ABS(ID) ASC
我该如何解决这个问题?
如果您的ID始终将包含前缀作为MDT
,那么您可以使用它来根据您的要求进行排序:
SELECT * FROM File
ORDER BY CAST(replace(ID, 'MDT ', '') AS UNSIGNED) ASC
SQLFiddle演示
尝试像这样,它会根据数字进行排序:
select substr(id,4)*1 from file order by substr(id,4)*1
它会给
1
2
3
11
44
...
如果您想要所有字段根据您的字符串长度(例如:id = proj-001911 - >采取SUBSTR(id,6),请尝试下面的查询(“substr(id,4)”或“substr(id,5)”) )* 1))
select * from file order by substr(id,4)*1
试试这个片段
SELECT * FROM file ORDER BY ID + 0 ASC
链接地址: http://www.djcxy.com/p/11561.html
上一篇: Order by numeric values in SQL ascending
下一篇: google app engine