自然排序在查询中的行为不符合预期。我不明白为什么。看过这个网站http://www.copterlabs.com/blog/natural-sorting-in-mysql/后,该方法大部分都有效。但是,'代码的alpha部分'意味着排序以奇怪的方式发生。
结果
M1
..
M3
P1
..
P3
M10
..
M19
P10
..
P19
预期
M1
..
M3
M10
..
M19
P1
..
P3
P10
..
P19
代码
'SELECT * FROM stock ORDER BY LENGTH(code), code';
答案 0 :(得分:2)
您首先按字段的长度排序。当然,这会以错误的方式混合结果。尝试拆分字母数字值和数字
SELECT * FROM stock
ORDER BY substr(code, 1, 1),
substr(code, 2, 99) * 1
*1
将字符串转换为数字。您也可以使用cast(substr(code, 2, 99) as signed)