在数据库设计的时候,为了保存处理方便,很多情况下会将数字格式的字段作为字符串格式插入,但是在查询时,若想按照此字段排序的话就会有小问题。直接使用order by排序,数据库会按照字符串的顺序来处理
一种 、
数字字符串为01 0100 02 0200 一排序就是这个顺序,我想要变成01 02 0100 0200 就用下面这个办法
把这个字段转为int 然后再排 序就对了。
ORDER BY CAST(字段名 AS DECIMAL)
另一种
假如你要排序的字段名为 mynum,order by 字段民称+0 desc/asc的形式排序
这样会将数值字符串类型的数据当作数值进行处理,但是存在效率问题,不推荐使用varchar/char类型来存储数值,这样会带来不不必要的问题
使用绝对值函数ABS,它告诉MySQL使用绝对值来处理处理这个字段:
ORDER BY ABS(字段名)