数据库数值字符串类型按数值排序

在数据库设计的时候,为了保存处理方便,很多情况下会将数字格式的字段作为字符串格式插入,但是在查询时,若想按照此字段排序的话就会有小问题。直接使用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(字段名)

猜你喜欢

转载自blog.csdn.net/parade0393/article/details/79406020
今日推荐