Oracle中查询中有一字段 存储的是 纯数字组成的字符串 结构 如:34,54,34,2  
我现在要根据这个字段查询 
类似  :select * from tb_name where id in(34,54,34,2)
也就是
知道字符串 ID="34,54,34,2 " 
在Oracle中查 值为ID 的结果。

解决方案 »

  1.   


    select * from tb_name
     where instr(',' || replace(id_list, ' ','') || ',', ',' || id || ',') > 0
      

  2.   

    select * from tb_name where id =34||','||54||','||'34'||','||2
      

  3.   

    先把sql语句存储在字符创中,再执行字符串;DECLARE v_Sql VARCHAR2(1000);
    v_ID VARCHAR2(50);
    BEGIN
    v_ID := '34,54,34,2';
    v_Sql := select * from tb_name where id in('|| v_ID || ')';
     EXECUTE IMMEDIATE v_Sql;
    END;
      

  4.   


    --instr函数即可
    select * from tb_name where instr('34,54,34,2',id)>0;
      

  5.   


    好像 有问题额 
    比如:select Instr('1,51,31,41,51','51')
    from dual;  我得到的 不是 2  而是3 的  ???
      

  6.   

    你管他是几,只要 where Instr('1,51,31,41,51','51') > 0 即可。
      

  7.   

    try select * FROM TB WHERE instr(','||'1,51,31,41,51'||',',','||'51'||',') > 0
    在两个字符串两边各加一个逗号。
      

  8.   

    select * from tb_name where instr('34,54,34,2',id)>0;
      

  9.   

    那就这样 试试select (length('1,51,31,41,51') - length(replace('1,51,31,41,51','51','')))/length('51') from dual;