これでうまくいきます:
SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
,CAST(value as SIGNED INTEGER)
,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
,value
the ORDER BY
の4つのレベル :
-
REGEXP
任意のアルファ線に1を割り当て、非アルファ線に0を割り当てます -
SIGNED INT
ダッシュの前の部分ですべての数値を並べ替えます。 -
SIGNED INT
ダッシュを削除した後、ダッシュの前の同じ値を持つアイテムをダッシュの後の部分で並べ替えます。 2番を置き換える可能性がありますが、万が一の場合に備えて、90-1を9-01と同じように扱いたくないでしょう。 - 文字をアルファベット順に並べ替えます。
デモ: SQL Fiddle