一、背景
最近遇到一个需求,给某个字段进行排序,这原本是一再简单不过的事情。我兴高采烈地写好了代码,放到测试环境上一排序,什么鬼100在15后面。查看对应数据库存放的字段类型,我的天是varchar。
二、解决方法
有三种解决方法:
1、字符串+0
select * from test order by (value+0) desc
2、使用 CAST 函数
select * from test order by CAST(value as SIGNED) desc
3、使用 CONVERT 函数
select * from test order by CONVERT(value ,SIGNED) desc
三、备注
可能有同学会有疑惑 SIGNED 是什么东东,以下三种是常用的类型。
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED