我怎样才能按字母和数字排序MySQL表的结果?
例如,将A3,N8,C3,Z2,U1作为A3,C3,U1,Z2。这可以在查询中完成,也可以在事后用PHP完成。
编辑:需要在U100之前订购U23。
答案 0 :(得分:4)
ORDER BY my_field
将完成这项工作。 ORDER BY
以自然的方式对数字,字符串,日期等进行排序。
ORDER BY LEFT(fld, 1),
CAST(SUBSTRING(fld, 1) AS SIGNED)
答案 1 :(得分:2)
一种可能是打破两个字段进行排序,比如
order by substring(cols,1,1), lpad(substring(cols,2),10,0)
^ assuming only prefix single char
^ lpad like 0000000001
答案 2 :(得分:1)
不是最优雅,但如果没有太多案例,可能是最容易维护的。
ORDER BY CASE id
...
WHEN 'U23' THEN 1
WHEN 'U100' THEN 2
...
END