在数据库中,它存储的值是
M2345
45
M345
E21
A3
有没有办法正确排序?像
A3
E21
45
M345
M2345
答案 0 :(得分:2)
假设在数字开始之前最多只能有一个字母,你可以在排序定义中使用这样的条件:
ORDER BY CAST(IF(col REGEXP '^[a-z]', SUBSTRING(col, 2), col) AS SIGNED)
不幸的是,MySQL没有可以处理正则表达式的替换函数,否则在这一点上会非常有用。
您可能还需要考虑将数值本身存储在单独的计算字段中,以便更有效地进行排序。