then just parse differently.
ops$tkyte@ORA817DEV.US.ORACLE.COM> select x,
2 decode( sign(instr(x,'/')), 1, 2, 1 ) c1,
3 decode( sign(instr(x,'/')), 1, 0, to_number(x) ) c2,
4 decode( sign(instr(x,'/')), 1, to_number(substr(x,1,instr(x,'/')-1)) ) c3,
5 decode( sign(instr(x,'/')), 1, to_number(substr(x, instr(x,'/')+1, instr(x,'-')-instr(x,'/')-1 )) ) c4,
6 decode( sign(instr(x,'-')), 1, to_number(substr(x,instr(x,'-')+1)) ) c5
7 from t
8 /
X C1 C2 C3 C4 C5
---------- ---------- ---------- ---------- ---------- ----------
231 1 231
22 1 22
5678 1 5678
12/02-03 2 0 12 2 3
2/02-03 2 0 2 2 3
10/02-03 2 0 10 2 3
6 rows selected.
and order by whatever you need.