select PX_INFOID,PNAME,PX_ITEM,PX_PLACE,LETTERCODE from CQ_JKGL_PX where if_del=1 and (PX_INFOID=0 or 0=0) 
and (PNAME='e' or 'e'=null) 
and (PX_ITEM='null' or 'null'=null)
and (PX_PLACE='s' or 's'=null)
 and (LETTERCODE='s' or 's'=null)
这语句怎么不对,请高手指点一下

解决方案 »

  1.   

    (PX_INFOID=0 or 0=0)  
    and (PNAME='e' or 'e'=null)  
    and (PX_ITEM='null' or 'null'=null)
    and (PX_PLACE='s' or 's'=null)
     and (LETTERCODE='s' or 's'=null)
    请问你为什么要加or后面的语句????
      

  2.   

    select PX_INFOID,PNAME,PX_ITEM,PX_PLACE,LETTERCODE 
    from CQ_JKGL_PX 
    where if_del=1 and PX_INFOID=0
    and PNAME='e' and  PX_ITEM is null
    and PX_PLACE='s' and LETTERCODE='s'
    --你搞那么多的“or” 干什么
      

  3.   

    这样的SQL语句可读性不好,针对null,oracle建议用nvl()来转换一下
      

  4.   

    单从语法上说,在oracle中同null比较要用is关键字,如
    'e' is null
      

  5.   

    select PX_INFOID,PNAME,PX_ITEM,PX_PLACE,LETTERCODE from CQ_JKGL_PX where if_del=1 and (PX_INFOID=0 or 0=0)  
    and (PNAME='e' or 'e'=null)  
    and (PX_ITEM='null' or 'null'=null)
    and (PX_PLACE='s' or 's'=null)
     and (LETTERCODE='s' or 's'=null)
    楼主的这条sql语句有好多错误
    分类:
    1、or 后跟0=0就是说永远为真也就是PX_INFOID=0根本不起作用
    2、类似的条件都不对'e'=null,oracle中应该是'e' is null
      

  6.   

    or 后面的可以都去掉了,反正都是不成立的。
    如果你是在过程里使用,输入参数可变的话。使用形式
    (字段=变量 or 变量 is null)
      

  7.   

    楼主应该是在做一个or转成union的测试,或者是在学习位图索引.....