Dit zal het doen:
SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
,CAST(value as SIGNED INTEGER)
,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
,value
De 4 niveaus van the ORDER BY
:
REGEXP
wijst elke alfaregel een 1 en niet-alfas een 0 toeSIGNED INT
Sorteert alle getallen op het gedeelte voorafgaand aan het streepje.SIGNED INT
na het verwijderen van het streepje sorteert u alle items met dezelfde waarde vóór het streepje op het gedeelte na het streepje. Zou mogelijk nummer 2 kunnen vervangen, maar zou 90-1 niet hetzelfde willen behandelen als 9-01 mocht dat het geval zijn.- Rangschikt de letters alfabetisch.
Demo:SQL Fiddle