[MYSQL]让字符串类型的数字按照正确的姿态排序

今天排序遇到了个问题,若是数据类型是 varchar 的数字,在排序的过程当中,出来并非咱们想要的效果。
例如:sql

sqlselect * from table order by field_varchar ;
field_varchar
0
1
11
100
2
22
3
33

在网上查找了一圈,比较常见的作法是:code

sqlselect * from table order by field_varchar+0;

转换为数字排序

field_varchar
0
1
2
3
11
22
33
100

点进来看的都是有求知欲的,因此对的,故事尚未完。
若是 这个字段里面有 空字符窜 或者 null。上面的方法还不够完美。table

会出现下面的状况select

field_varchar
0
空
1
2
3
11
22
33
100

由于空字符窜+0 是0, 0+0 也是0 ,这个时候就会出现不稳定的 0 和空 上下跳动的状况。
那么真正正确的姿态是怎么样的呢?数据类型

请看大屏幕方法

sqlselect * from table order by length(field_varchar),field_varchar;