Vous pouvez utiliser des fonctions dans votre clause de commande. Dans ce cas, vous pouvez diviser les parties non numériques et numériques du champ et les utiliser comme deux des critères de tri.
select * from t
order by to_number(regexp_substr(a,'^[0-9]+')),
to_number(regexp_substr(a,'[0-9]+$')),
a;
Vous pouvez également créer un index basé sur des fonctions pour prendre en charge ceci :
create index t_ix1
on t (to_number(regexp_substr(a, '^[0-9]+')),
to_number(regexp_substr(a, '[0-9]+$')),
a);