如何让where 的条件可以待定添加,例如,and 1=1 在有数据的情况下变成and p.dr<>1 
不是太明白。
case when r.dr is null or  (r.dr is not null and r.dr<>1)  then 1 else 0 end 
是要这样,不是吧。

解决方案 »

  1.   

    这个有问题,dr为空的时候应该也返回true
    nvl(g.dr,2)<>1
      

  2.   

    我也没看明白。 用数据列出来吧, 然后看一下你想要的结果。不要那么复杂的逻辑。 另外:一般来说 动态的where  都是在 应用程序里面进行语句拼接的,数据库只执行查询结果等
      

  3.   

    不太明白, 以下仅供参考 - 
    使用动态SQL, 按你的条件构建SQL语句,然后,直接
    execute sqlstatement using bind_variablesHope this help.
      

  4.   


    lz你的动态where 应该是需要去应用程序里面进行,而不是用sql查询
      

  5.   

    ++
    难道是页面筛选?为啥不在程序里面处理好sql?
    还有明明是and (dr is null or dr<>'1')  
      

  6.   

    +1,反正就是输入了条件就用上它,没输入就忽略嘛。++
    难道是页面筛选?为啥不在程序里面处理好sql?
    还有明明是and (dr is null or dr<>'1')