[MYSQL]让字符串类型的数字按照正确的姿态排序
今天排序遇到了个问题,如果数据类型是 varchar 的数字,在排序的过程中,出来并不是我们想要的效果。
例如:
select * from table order by field_varchar ;
field_varchar
0
1
11
100
2
22
3
33
在网上查找了一圈,比较常见的做法是:
select * from table order by field_varchar+0;
转换为数字
field_varchar
0
1
2
3
11
22
33
100
点进来看的都是有求知欲的,所以对的,故事还没有完。
如果 这个字段里面有 空字符窜 或者 null。上面的方法还不够完美。
会出现下面的情况
field_varchar
0
空
1
2
3
11
22
33
100
因为空字符窜+0 是0, 0+0 也是0 ,这个时候就会出现不稳定的 0 和空 上下跳动的情况。
那么真正争取的姿态是怎么样的呢?
请看大屏幕
select * from table order by length(field_varchar),field_varchar;