首先按字母顺序排序,然后按数字排序

时间:2013-07-02 05:48:19

标签: mysql sql sorting sql-order-by

我在mysql排序中寻找一些调整,我通常从表中选择记录,然后按名称(varchar)ASC 订购记录,但数字始终是第一个

这里是我的问题的一些例子(注意.mysql首先按0-9排序记录

SELECT name FROM list ORDER BY name ASC
record returned:
1 star
2 star
9 slice
Ape
Age
Beg
Bell
Fish
Zoo

我想要的是先输入字母顺序,然后输入数字

期望的输出

Ape
Age
Beg
Bell
Fish
Zoo
1 star
2 star
9 slice

4 个答案:

答案 0 :(得分:24)

使用以下ORDER BY子句:

ORDER BY IF(name RLIKE '^[a-z]', 1, 2), name

答案 1 :(得分:6)

参考this

SELECT name FROM list ORDER BY name * 1 ASC

被修改

SELECT name FROM list ORDER BY name * 1, name ASC

答案 2 :(得分:1)

您可以尝试这样的事情:

SELECT 
    name 
FROM 
    list 
ORDER BY 
    IF(name REGEXP '^[0-9]', CONCAT('zz',name),name) ASC

因此,如果您的名字以数字开头,则您在开头连接'zz'(这样它将是最后一个)

答案 3 :(得分:-1)

试试这个..

获得答案很简单

SELECT name  from list ORDER BY (name +0) ASC ,name ASC