MySql 對混合字母數(shù)字的字段排序

開發(fā)中,遇到一個問題。查詢的記錄需要按照一個字段進行排序。

該字段部分記錄如下:H6-ML1,H6-ML2,H6-L1,H6-L2,H6-L3...H6-L10,H6-L11...
順序應(yīng)該就按照這個順序排列,但是H6-L1后邊本應(yīng)該是H6-L2,但是排列的是H6-L10。

1和10排列在一起,額,其實也在意料之中,數(shù)據(jù)庫嘛,又不是沒出現(xiàn)過這樣的排序。

使用了 CONVERT(column_name using gbk) 不行,CONVERT(column_name using signed) 也不行。

如果是中文漢字一和十,興許 gbk 的方法可以。

最后使用了 ORDER BY LEFT(column_name, 4), MID(column_name, 5, 10) + 0 來進行排序,完成了我的需求。

左側(cè)LEFT函數(shù),排序的是字母,默認升序,右側(cè)的MID(ColumnName, Start [, Length]) 函數(shù)排序的是數(shù)字,Start是從1開始的,
我這里是對比第5位的大小進行排序,后邊+0是過濾掉H6-ML1,此值的排序就是M排序+0排序。

目前是完成了需求,后期如果該列又有復(fù)雜的值,或許還得完善了。

參考鏈接:https://www.guohuawei.com/archives/mysql-order-string-and-number-in-one-field.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容