你可以通过instr('3,12,2,4,5,6',',2,')
不就行了!

解决方案 »

  1.   

    下面的sql正确执行有一个前提就是数字后面紧跟着逗号,如果不满足先自己整理一下。select decode(substr('12,2,3,23,127',1,2),'2,',1,0)
         + decode(substr('12,2,3,23,127',-2),',2',length('12,2,3,23,127'),0)
         + instr('12,2,3,23,127', ',2,') + 1 pos from dual;
    返回的位置是正确的,写得太长,让您见笑了。
      

  2.   

    更正;上面的sql返回的位置不一定正确,但可以判断是否有你找的数字。
    突然又想起来一个更好的办法
    SQL> var father varchar2(100);
    SQL> begin
      2  :father := '2,3,4,2,65,22,3,23,2,12,2';
      3  end;
      4  /
    SQL> print father;
    FATHER
    --------------------------
    2,3,4,2,65,22,3,23,2,12,2
    SQL> select instr(','||:father||',', ',2,',1,1) pos from dual;
           POS
    ----------
             1SQL> select instr(','||:father||',', ',2,',1,2) pos from dual;
           POS
    ----------
             7
      

  3.   

    第一个问题已经解决。方法和阿童木的第二个方法差不多,不同的是我是在第二个字符串
    前后加入‘,’。当然更要感谢 myx7852(无极)了,他虽然不能直接找出结果,但是给我了
    一个方法。
    现在,对于第二个问题,那位友好的建议呢?
      

  4.   

    我现在有一个思路,就是建立了一个中间表,表的字段为要输入的参数。前端
    执行插入表纪录的操作。同时对表建立after insert触发器,触发器中调用
    我写好的存储过程。不知道思路科正确那,现在我的数据量少,前端程序反映
    不到这种方法的高效性。这样应该没有问题吧?