我保留了许多与工作相关的SQL便捷脚本。 有一段时间我一直在使用会议 我可以激活where语句中的几个AND子句 通过提供一个或多个值来搜索。例如,
where color like '%&color' and size like '%&size'
当我在首选客户端(Golden6)中运行此类SQL时,会弹出 一个对话框,我可以在其中提供颜色,大小或两者的值。 非常方便,但LIKE'%string'经常 可怕的,经常导致全表扫描,或者我已经读过了。
是否有一些替代技术可用于编写和管理这些技术 脚本,保持只能填写的便利 我想要使用的参数,但避免围绕LIKE'%string&#39 ;?的性能问题我不想每次使用它时都要编辑脚本, 因为我把它们放在git中,而且我不想管理一堆本地修改过的文件,以便随时整理。
答案 0 :(得分:1)
如果您想支持可选输入参数,那么您可以尝试
with data as
(select '123' col1, 'ABC' col2 from dual union select '124', 'AB' from dual)
select * from data a where a.col1 = nvl('&col1', a.col1) and a.col2 = nvl('&col2', a.col2)
具有空值的附加数据行
with data as
(select '123' col1, 'ABC' col2
from dual
union
select '124', 'AB'
from dual
union
select '123', null from dual
union
select '124', null from dual)
select *
from data
where ('&col1' is null or '&col1' is not null and '&col1' = col1)
and ('&col2' is null or '&col2' is not null and '&col2' = col2)