ops$tkyte%ORA9IR2> select substr( str2, instr( str2, '|', 1, 1 )+1, instr( str2,'|',1,2 )-instr( str2,'|',1,1 )-1 )c1,
2 substr( str2, instr( str2, '|', 1, 2 )+1, instr( str2,'|',1,3 )-instr( str2,'|',1,2 )-1 )c2,
3 /* ... */
4 substr( str2, instr( str2, '|', 1, 5 )+1, instr( str2,'|',1,6 )-instr( str2,'|',1,5 )-1 )c5 5 from (
6 select '|'||str||'|' str2
7 from t
8 )
9 /
C1 C2 C5
----------- ----------- -----------
1 2 5