Detta kommer att göra 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 fyra nivåerna av the ORDER BY
:
REGEXP
tilldelar valfri alfarad en 1 och icke-alfasad en 0SIGNED INT
Sorterar alla siffror efter delen som föregår bindestrecket.SIGNED INT
efter att ha tagit bort strecket sorteras alla objekt med samma värde före strecket efter delen efter strecket. Kan eventuellt ersätta nummer 2, men skulle inte vilja behandla 90-1 på samma sätt som 9-01 om fallet skulle uppstå.- Sorterar bokstäverna i alfabetisk ordning.
Demo:SQL Fiddle