1、在mysql中,根据数字字符串排序,会按照和java字符串比较的模式进行(即第一位先比较,相等在比较下一位,以此类推),这样就会在有些比较的情况下,获取到不正确的结果,如:2和19,用数字的类型比较应该是19更大,但是两者类型都是字符串的话,就是2比19更大,所以此时我们想要得到我们需要的结果,就需要转换类型。
2、常用的转换类型
- 二进制,同带binary前缀的效果 : BINARY
- 字符型,可带参数 : CHAR()
- 日期 : DATE
- 时间: TIME
- 日期时间型 : DATETIME
- 浮点数 : DECIMAL
- 整数 : SIGNED
- 无符号整数 : UNSIGNED
3、CAST方法用法(CAST(value as type))
用法如下:
select t.CLASS_NO,t.name,t.grade from edu_class t ORDER BY t.GRADE asc,CAST(t.CLASS_NO AS signed) asc;
4、CONVERT方法(CONVERT(value, type))
用法如下:
select t.CLASS_NO,t.name,t.grade from edu_class t ORDER BY t.GRADE asc,CONVERT(t.CLASS_NO,SIGNED) asc;
两者效果都如下,可以看到转换类型后的排序就是我们想要的效果:
5、学海无涯苦作舟,不要急于求成,慢慢沉淀才是真理!