Du kan använda funktioner i din order-by-klausul. I det här fallet kan du dela de icke-numeriska och numeriska delarna av fältet och använda dem som två av ordningskriterierna.
select * from t
order by to_number(regexp_substr(a,'^[0-9]+')),
to_number(regexp_substr(a,'[0-9]+$')),
a;
Du kan också skapa ett funktionsbaserat index för att stödja detta:
create index t_ix1
on t (to_number(regexp_substr(a, '^[0-9]+')),
to_number(regexp_substr(a, '[0-9]+$')),
a);