按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