Dette vil gøre det:
SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
,CAST(value as SIGNED INTEGER)
,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
,value
De 4 niveauer af the ORDER BY
:
REGEXP
tildeler enhver alfalinje et 1 og ikke-alfas et 0SIGNED INT
Sorterer alle tallene efter den del, der går forud for bindestregen.SIGNED INT
efter fjernelse af bindestreg sorteres alle elementerne med samme værdi før bindestregen efter delen efter bindestregen. Potentielt kunne erstatte nummer 2, men ønsker ikke at behandle 90-1 på samme måde som 9-01, hvis sagen skulle opstå.- Sorterer bogstaverne alfabetisk.
Demo:SQL Fiddle