oracle的In传入字符串1;2;3;4;5如何拼接成('1''2''3''4')

oracle的In传入字符串1;2;3;4;5怎么拼接成('1','2','3','4')
oracle的In传入字符串1;2;3;4;5怎么拼接成('1','2','3','4')供in 做查询使用.请大神帮忙!谢谢!
------解决方案--------------------
当然不起作用。in (?) 和 in (?,?,?,?,?) 怎么也不可能一样。

SELECT * FROM EMP E WHERE E.ENAME IN(select regexp_substr('10001;00026;00025','\d+',1,level) from dual connect by level <=3)
------解决方案--------------------
SQL> DECLARE
  2  v_str varchar2(1000);
  3  v_str1 varchar2(1000);
  4  --v_str2 varchar2(1000);
  5  --v_sql varchar(1000);
  6  begin
  7  --v_str_1=''';
  8  --v_str_2='''';
  9  v_str := '1;2;3;4;5';
 10  v_str1 := replace(v_str,';',chr(39)
------解决方案--------------------
chr(44)
------解决方案--------------------
chr(39));
 11  v_str := '('
------解决方案--------------------
''''
------解决方案--------------------
v_str1
------解决方案--------------------
''''
------解决方案--------------------
')';
 12  dbms_output.put_line(v_str);
 13  end;
 14  /
 
('1','2','3','4','5')
 
PL/SQL procedure successfully completed
 
------解决方案--------------------
create or replace function strsplit(p_value varchar2,
                                    p_split varchar2 := ',')
--usage: select * from table(strsplit('1,2,3,4,5'))
 return strsplit_type
  pipelined is
  v_idx       integer;
  v_str       varchar2(500);
  v_strs_last varchar2(4000) := p_value;

begin
  loop
    v_idx := instr(v_strs_last, p_split);
    exit when v_idx = 0;
    v_str       := substr(v_strs_last, 1, v_idx - 1);
    v_strs_last := substr(v_strs_last, v_idx + 1);
    pipe row(v_str);
  end loop;
  pipe row(v_strs_last);
  return;

end strsplit;

SELECT * FROM EMP E WHERE E.ENAME IN (select * from table(strsplit('1;2;3;4;5',';')))