通过字母和数字(A1,B2,B3,C2)订购MySQL结果

时间:2011-01-04 03:48:31

标签: php mysql sql

我怎样才能按字母和数字排序MySQL表的结果?

例如,将A3,N8,C3,Z2,U1作为A3,C3,U1,Z2。这可以在查询中完成,也可以在事后用PHP完成。

编辑:需要在U100之前订购U23。

3 个答案:

答案 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