SELECT * FROM A WHERE instr(A('B'),''''||jcxm||'''')>0;

解决方案 »

  1.   

    要求的是
    WHERE JCXM IN ('JCXM1','JCXM2')
    这个是什么意思
    WHERE instr(A('B'),''''||jcxm||'''')>0
      

  2.   

    太谢谢了!!!!
    还想问问你,为什么这样子就不行
    SELECT * FROM A WHERE JCXM IN A('B')

    SELECT * FROM A WHERE instr(A('B'),''''||jcxm||'''')>0
    就可以
    希望你不吝赐教
      

  3.   

    因为 in ('a','b') 这样在sql中是没有问题
    如果换成变量 就成了 in "'a','b'" 后面是个字符串 当然不行
    用instr就可以,判断是否在这个字符串中即可
      

  4.   

    那这样子行吗in ('a','b')
    换成变量 就成了 in "'a','b'"
    SELECT * FROM A WHERE JCXM IN RTRIM(LTRIM(A('B'),'"'),'"')
      

  5.   


    谢谢了!!!
    终于出来了………………
    我终于明白了!!不知道理解的对不
    就是说我的函数返回的是个字符串变量。只要调用A('B')她的返回值就是个字符串,是没有办法改变的。就算是加上RTRIM(A('B'),'"')返回的还是""'a','b'""……
      

  6.   

    in ('a','b') 这个是sql的语法
    按照你的说法
    你如果返回一个'select ... from ... where ..'这样的字符串,应该是直接执行这个sql语句了
    显然是不对的!