web-dev-qa-db-ja.com

最初にアルファベットで並べ替え、次に番号で並べ替えます

Mysqlの順序付けの微調整を探しています。通常、テーブルからレコードを選択してから、Name(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
13
Leon Armstrong

次のORDER BY句を使用します。

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

参照 this

SELECT name FROM list ORDER BY name * 1 ASC

編集済み

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

あなたはこのようなことを試すことができます:

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

したがって、名前が数字で始まる場合は、最初に「zz」を連結します(最後になるように)

1
Stephan