假设我在代码的不同位置有两个正在使用的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字符串更好的解决方案?
答案 0 :(得分:7)
您将需要使用更复杂的逻辑。也许:
where ( (? = 'not null' and manager_id is not null) or
(? = 'null' and manager_id is null)
)