今天排序遇到了个问题,若是数据类型是 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;