開(kāi)發(fā)中沃于,遇到一個(gè)問(wèn)題。查詢(xún)的記錄需要按照一個(gè)字段進(jìn)行排序。
該字段部分記錄如下:H6-ML1,H6-ML2,H6-L1,H6-L2,H6-L3...H6-L10,H6-L11...
順序應(yīng)該就按照這個(gè)順序排列,但是H6-L1后邊本應(yīng)該是H6-L2群扶,但是排列的是H6-L10。
1和10排列在一起镀裤,額竞阐,其實(shí)也在意料之中,數(shù)據(jù)庫(kù)嘛暑劝,又不是沒(méi)出現(xiàn)過(guò)這樣的排序馁菜。
使用了 CONVERT(column_name using gbk) 不行,CONVERT(column_name using signed) 也不行铃岔。
如果是中文漢字一和十,興許 gbk 的方法可以峭火。
最后使用了 ORDER BY LEFT(column_name, 4), MID(column_name, 5, 10) + 0 來(lái)進(jìn)行排序毁习,完成了我的需求。
左側(cè)LEFT函數(shù)卖丸,排序的是字母纺且,默認(rèn)升序涉兽,右側(cè)的MID(ColumnName, Start [, Length]) 函數(shù)排序的是數(shù)字较木,Start是從1開(kāi)始的,
我這里是對(duì)比第5位的大小進(jìn)行排序讯泣,后邊+0是過(guò)濾掉H6-ML1,此值的排序就是M排序+0排序嫁艇。
目前是完成了需求朗伶,后期如果該列又有復(fù)雜的值,或許還得完善了步咪。
參考鏈接:https://www.guohuawei.com/archives/mysql-order-string-and-number-in-one-field.html