To zrobi to:
SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
,CAST(value as SIGNED INTEGER)
,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
,value
4 poziomy the ORDER BY
:
REGEXP
przypisuje dowolną linię alfa 1, a niealfa 0SIGNED INT
Sortuje wszystkie liczby według części poprzedzającej myślnik.SIGNED INT
po usunięciu myślnika sortuje dowolne elementy o tej samej wartości przed myślnikiem według części po myślniku. Potencjalnie mógłby zastąpić numer 2, ale nie chciałby traktować 90-1 tak samo jak 9-01, gdyby zaistniała sprawa.- Sortuje litery alfabetycznie.
Demo:SQL Fiddle