Điều này sẽ làm được điều đó:
SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
,CAST(value as SIGNED INTEGER)
,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
,value
4 cấp độ của the ORDER BY :
-
REGEXPgán bất kỳ dòng alpha nào là 1 và dòng không phải alpha là 0 -
SIGNED INTSắp xếp tất cả các số theo phần trước dấu gạch ngang. -
SIGNED INTsau khi loại bỏ dấu gạch ngang, sắp xếp bất kỳ mục nào có cùng giá trị trước dấu gạch ngang theo phần sau dấu gạch ngang. Có khả năng thay thế số 2, nhưng sẽ không muốn coi 90-1 giống như 9-01 nếu trường hợp này phát sinh. - Sắp xếp các chữ cái theo thứ tự bảng chữ cái.
Demo: SQL Fiddle