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;

两者效果都如下,可以看到转换类型后的排序就是我们想要的效果:

Mysql—字符串转其他类型(CAST和CONVERT函数)

Mysql—字符串转其他类型(CAST和CONVERT函数)

5、学海无涯苦作舟,不要急于求成,慢慢沉淀才是真理!

相关文章: