# mysql字符串数字大小排序

对mysql数值字符串类型进行排序,在默认情况下使用order by 字段名称 desc/asc 进行排序的时候,mysql进行的排序规则是按照ASCII码进行排序的,并不会自动的识别出这些数据是数值

order by 字段名称+0 desc/asc的形式进行排序

----这样mysql会将数值字符串类型的数据当作数值进行处理,但是存在效率问题,不推荐使用varchar/char类型来存储数值,这样会带来不不必要的问题.

查询数据对数字排序的时候出现1 11 12 13 14....2 21 22 23 24...

现需要按数字大小排序则需要处理

①:ORDER BY 字段+0

②:ORDER BY CAST(字段 AS SIGNED)

③:ORDER BY 字段*1

根据测试此方式只支持纯数字(1,10)或者以数字开头(1a,11a)的字段,如果字段是按字符+数字形式的(a1,a2,b1,b2,a1a,a2a),则上面的方式达不到排序的目的