Cela le fera :
SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
,CAST(value as SIGNED INTEGER)
,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
,value
Les 4 niveaux de the ORDER BY
:
REGEXP
attribue à toute ligne alpha un 1 et non alpha à 0SIGNED INT
Trie tous les nombres par la partie précédant le tiret.SIGNED INT
après avoir supprimé le tiret, trie tous les éléments ayant la même valeur avant le tiret par la partie après le tiret. Pourrait potentiellement remplacer le numéro 2, mais ne voudrait pas traiter 90-1 de la même manière que 9-01 si le cas se présentait.- Trie les lettres par ordre alphabétique.
Démo :SQL Fiddle