Това ще направи това:
SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
,CAST(value as SIGNED INTEGER)
,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
,value
4-те нива на the ORDER BY :
REGEXPприсвоява на всеки алфа ред 1, а на неалфа - 0SIGNED INTСортира всички числа по частта, предхождаща тирето.SIGNED INTслед премахване на тирето сортира всеки от елементите със същата стойност преди тирето по частта след тирето. Потенциално може да замени номер 2, но не бих искал да третира 90-1 по същия начин като 9-01, ако възникне такъв случай.- Сортира буквите по азбучен ред.
Демо:SQL Fiddle