Mysql数字排序
原文链接 http://veryyoung.me/blog/2015/08/17/mysql-rank-number.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
今天遇到一个需求,需要对计算过后的结果进行排序,结果出现了类似
1 10 11 12 13 14 15 16 17 18 19 2 3 4 5 6 7 8 9
这样的排序结果
很显然,mysql把它当字符串去排序了。
解决方案
使用CAST把字符串转为数字再排序
SELECT * FROM table_name ORDER BY CAST(field_name AS UNSIGNED)
将字段*1或者+0可以将MySQL字符串字段按数值排序
SELECT * FROM table_name ORDER BY field_name*1 desc
或者
SELECT * FROM table_name ORDER BY field_name+0 desc
使用MySQL绝对值函数ABS
SELECT * FROM table_name ORDER BY ABS(field_name) desc