I have an comma delimited string which I want to use in an \"IN\" clause of the statement. eg: 100,101,102
Since In and \"IN\" clause I have to quote the individial
pure SQL, but not very well tested...
select to_number(substr(postfix, 2, instr(postfix, ',' ,2)-2)) id
from (
select substr(val, instr(val, ',', 1, n)) postfix
from (select ',101,102,103,' val from dual)
, (
select level n
from dual
connect by level < 10)
where instr(val, ',', 1, n) > 0)
where instr(postfix, ',' ,2)> 2;
EDIT: improved
select substr(postfix, 1, instr(postfix, ',' ,1)-1)
from (
select substr(val, instr(val, ',',1, level)+1) postfix
from (select ',101,102,103,' val from dual)
connect by instr(val, ',', 2, level) > 0
);
Note:
credit: something like that is in Stephane Faroult's book "Refactorying SQL Applications" (O'Reilly)