Questo lo farà:
SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
,CAST(value as SIGNED INTEGER)
,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
,value
I 4 livelli di the ORDER BY
:
REGEXP
assegna a qualsiasi linea alfa un 1 e non alfa uno 0SIGNED INT
Ordina tutti i numeri in base alla parte che precede il trattino.SIGNED INT
dopo aver rimosso il trattino, ordina tutti gli elementi con lo stesso valore prima del trattino per la parte dopo il trattino. Potenzialmente potrebbe sostituire il numero 2, ma non vorrei trattare 90-1 come 9-01 in caso si presentasse il caso.- Ordina le lettere in ordine alfabetico.
Demo:SQL Fiddle