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
次のORDER BY
句を使用します。
ORDER BY IF(name RLIKE '^[a-z]', 1, 2), name
参照 this
SELECT name FROM list ORDER BY name * 1 ASC
編集済み
SELECT name FROM list ORDER BY name * 1, name ASC
あなたはこのようなことを試すことができます:
SELECT
name
FROM
list
ORDER BY
IF(name REGEXP '^[0-9]', CONCAT('zz',name),name) ASC
したがって、名前が数字で始まる場合は、最初に「zz」を連結します(最後になるように)