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