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 :
REGEXPtilldelar valfri alfarad en 1 och icke-alfasad en 0SIGNED INTSorterar alla siffror efter delen som föregår bindestrecket.SIGNED INTefter 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