今天排序遇到了個問題,若是數據類型是 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;