set ver off def Del='@' def String="@0@11@222@3333@44444@555555@6666666@77777777@888888888" select Rownum Row#, SUBSTR(A.Str||'&Del' , INSTR(A.Str||'&Del' , '&Del', 1, Rownum ) +1 , INSTR(A.Str||'&Del' , '&Del', 1, Rownum+1) -INSTR(A.Str||'&Del' , '&Del', 1, Rownum ) -1 ) Token From ( select '&String' Str from dual ) A, all_objects B where Rownum< length(A.Str)-length(REPLACE(A.Str,'&Del'))+1 ; ROW# TOKEN ---------- ------------------------------------------------------- 1 0 2 11 3 222 4 3333 5 44444 6 555555 7 6666666 8 77777777 9 888888888