我写了一个查询语句,里面条件用OR 结果查询速度特别慢,现在在条件里又加了一个嵌套,可是问题出来了,前后都有and连接,不知道怎么写了,请大家帮忙改改!
              and nvl(dr, 0) = 0) tz2
         where tz.freevalueid = a.assid
           and tz1.freevalueid = a.assid
             and tz2.freevalueid = a.assid
           and b.pk_accsubj = a.pk_accsubj
从这里开始           and b.subjcode=(select subjcode from bd_accsubj b  where  b.subjcode like '1131%'  or   b.subjcode like '2121%'   or  b.subjcode like '1151%')到这里结束,前后有and应该怎么改           and curr.pk_currtype=a.pk_currtype
         group by tz1.valuecode,
谢谢各位了啊

解决方案 »

  1.   

    and exists(select 1 from bd_accsubj b where b.subjcode=subjcode 
    and b.subjcode like '1131%' or b.subjcode like '2121%' or b.subjcode like '1151%')
      

  2.   

    刚那个问题解决了,现在新的问题出现了,因为是写的存储过程,里面那个查询语句里面的where条件查询后面是一个变量,此变量是一个拼出来的串b.subjcode like '1131%' or b.subjcode like '2121%' or b.subjcode like '1151%',我应该怎么写呢!
      

  3.   

    ||b.subjcode||' like ''1131%'''||' or '||b.subjcode||' like ''2121%'''||' or '||b.subjcode||' like ''1151%'''
      

  4.   

    oracle里在引号里的引号,两个算一个
    例子where colum='是''我们''吗' 实际上时判断 colum是不是等于 是‘我们’吗?
    总之在引号里的引号两个算一个
      

  5.   

    继续问问题了,存储过程写好了,编译也通过了,但是为什么做测试的时候总是提示缺少右括号呢,检查了一遍,没有任何的问题,然后又弹出一个错误,是ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小;ORA-06512:在“SYS.DBMS_OUTPUT”,line 148;ORA-06512:在line2
    求解答