我可以在Oracle SQL参数中使用NULL还是NOT NULL?

时间:2018-09-10 11:25:44

标签: sql oracle

假设我在代码的不同位置有两个正在使用的Oracle SQL查询:

select *
from employees
where manager_id IS NULL
and etc etc etc...

select *
from employees
where manager_id IS NOT NULL
and etc etc etc...

两个查询之间的唯一区别是,第一个查询的manager_id为NULL,第二个查询的manager_id为NOT NULL。

有什么办法可以将它写成一条通用语句?是否可以在参数中传递NULL或NOT NULL?像这样:

select *
from employees
where manager_id = ?
and etc etc etc...

我知道上面的例子不起作用(我知道为什么)。我的问题更多的是,是否存在比管理两个99%相似的单独SQL字符串更好的解决方案?

1 个答案:

答案 0 :(得分:7)

您将需要使用更复杂的逻辑。也许:

where ( (? = 'not null' and manager_id is not null) or
        (? = 'null' and manager_id is null)
      )