Dies wird es tun:
SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
,CAST(value as SIGNED INTEGER)
,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
,value
Die 4 Ebenen des the ORDER BY
:
REGEXP
weist jeder Alpha-Zeile eine 1 und Nicht-Alpha-Zeilen eine 0 zuSIGNED INT
Sortiert alle Zahlen nach dem Teil vor dem Bindestrich.SIGNED INT
Nach dem Entfernen des Bindestrichs werden alle Elemente mit dem gleichen Wert vor dem Bindestrich nach dem Anteil nach dem Bindestrich sortiert. Könnte möglicherweise Nummer 2 ersetzen, würde aber 90-1 nicht gleich behandeln wollen wie 9-01, sollte der Fall eintreten.- Sortiert die Buchstaben alphabetisch.
Demo:SQL-Geige