Esto lo hará:
SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
,CAST(value as SIGNED INTEGER)
,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
,value
Los 4 niveles de the ORDER BY :
REGEXPasigna a cualquier línea alfa un 1 y no alfa un 0SIGNED INTOrdena todos los números por la parte que precede al guión.SIGNED INTdespués de quitar el guión, ordena cualquiera de los elementos con el mismo valor antes del guión por la porción después del guión. Potencialmente podría reemplazar el número 2, pero no querría tratar el 90-1 de la misma manera que el 9-01 si surgiera el caso.- Ordena las letras alfabéticamente.
Demostración:SQL Fiddle