Đ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
:
-
REGEXP
gán bất kỳ dòng alpha nào là 1 và dòng không phải alpha là 0 -
SIGNED INT
Sắp xếp tất cả các số theo phần trước dấu gạch ngang. -
SIGNED INT
sau 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