declare
v_var varchar2(500):='12333333,3333333333,125,2547,25631,451,010,2323232123,344554654';
v_length number;
v_var1 varchar2(500);
v_var2 varchar2(500);
v_lenght number;
v_lenght1 number;
v_INT varchar2(500);
begin
v_length:=length(v_var);
for i in 1..v_length
loop
if i>=2 then
v_lenght1:=to_number(instr(v_var,',',i-1,i-1)+1);
else
v_lenght1:=1;
end if;
if instr(v_var,',',i,i)-v_lenght1 like '-%' then
v_INT:=v_length;
ELSE
v_INT:=instr(v_var,',',i,i)-v_lenght1;
END IF;
--v_var2:=substr(v_var,v_lenght1,instr(v_var,',',i,i)-v_lenght1);
v_var2:=substr(v_var,v_lenght1,v_INT);
--dbms_output.put_line('I='||i);
--dbm s_output.put_line('v_lenght1='||v_lenght1);
dbms_output.put_line(v_var2);
if instr(v_var,',',i,i)-v_lenght1 like '-%' then
exit;
END IF;
end loop;
end;
select instr('12-5,2547,25631,451,010','-',1,1) from dual
v_var varchar2(500):='12333333,3333333333,125,2547,25631,451,010,2323232123,344554654';
v_length number;
v_var1 varchar2(500);
v_var2 varchar2(500);
v_lenght number;
v_lenght1 number;
v_INT varchar2(500);
begin
v_length:=length(v_var);
for i in 1..v_length
loop
if i>=2 then
v_lenght1:=to_number(instr(v_var,',',i-1,i-1)+1);
else
v_lenght1:=1;
end if;
if instr(v_var,',',i,i)-v_lenght1 like '-%' then
v_INT:=v_length;
ELSE
v_INT:=instr(v_var,',',i,i)-v_lenght1;
END IF;
--v_var2:=substr(v_var,v_lenght1,instr(v_var,',',i,i)-v_lenght1);
v_var2:=substr(v_var,v_lenght1,v_INT);
--dbms_output.put_line('I='||i);
--dbm s_output.put_line('v_lenght1='||v_lenght1);
dbms_output.put_line(v_var2);
if instr(v_var,',',i,i)-v_lenght1 like '-%' then
exit;
END IF;
end loop;
end;
select instr('12-5,2547,25631,451,010','-',1,1) from dual