修改老系统遇到的一个问题。
code正常存的是1、2、3这样的数字,但也有部分记录需要存为空或者其他字符,所以不能改为int类型。那么按varchar排序得到的结果可能是:
1、10、11、2、3、4、5、6、7、8、9
但是我们想要按照数字排序:
1、2、3、4、5、6、7、8、9、10、11
解决办法:
方法一:
ORDER BY CAST(字段名 AS DECIMAL)
方法二:
ORDER BY 字段名 +0
方法三:
使用MySQL绝对值函数ABS,告诉MySQL使用绝对值来处理该字段:
ORDER BY ABS(字段名)