[英]Order by numeric values in SQL ascending
我正在尝试获取此输出。
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
试试那个片段
SELECT * FROM file ORDER BY ID + 0 ASC
尝试这样,它将基于数字排序:
select substr(id,4)*1 from file order by substr(id,4)*1
它会给
1个
2
3
11
44
...
如果要所有字段,请根据您的字符串长度尝试以下查询( “ substr(id,4)”或“ substr(id,5)” )(例如:id = proj-001911->取SUBSTR(id,6 )* 1))
select * from file order by substr(id,4)*1
SELECT * FROM file
ORDER BY CONVERT(SUBSTRING(ID,5),UNSIGNED) ASC
SUBSTRING()
将提取'MDT '
之后'MDT '
所有字符,而CONVERT()
将剩余的子字符串更改为在其上执行ORDER BY
无符号整数
注意 SUBSTR()
是SUBSTRING()
的同义词。
我也正在搜索它,但是就在阅读这里时,我被它打动了,发现了一个解决方案,如果该列只包含数字作为数据,那么您需要在数据库表中进行修改并将该列定义为INT值类型,那么我确定您需要完成。 例如。 {SELECT * FROM file ORDER BY CONVERT(SUBSTRING(ID,5),UNSIGNED) ASC}
在这种情况下, Convert
为列,需要将其定义为INT(5)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.