美文网首页
MySql 对混合字母数字的字段排序

MySql 对混合字母数字的字段排序

作者: 奈司 | 来源:发表于2020-06-06 18:24 被阅读0次

开发中,遇到一个问题。查询的记录需要按照一个字段进行排序。

该字段部分记录如下:H6-ML1,H6-ML2,H6-L1,H6-L2,H6-L3...H6-L10,H6-L11...
顺序应该就按照这个顺序排列,但是H6-L1后边本应该是H6-L2,但是排列的是H6-L10。

1和10排列在一起,额,其实也在意料之中,数据库嘛,又不是没出现过这样的排序。

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

如果是中文汉字一和十,兴许 gbk 的方法可以。

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

左侧LEFT函数,排序的是字母,默认升序,右侧的MID(ColumnName, Start [, Length]) 函数排序的是数字,Start是从1开始的,
我这里是对比第5位的大小进行排序,后边+0是过滤掉H6-ML1,此值的排序就是M排序+0排序。

目前是完成了需求,后期如果该列又有复杂的值,或许还得完善了。

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

相关文章

网友评论

      本文标题:MySql 对混合字母数字的字段排序

      本文链接:https://www.haomeiwen.com/subject/lqwazhtx.html