使用参数过滤掉sql中的多个值

时间:2013-05-19 15:09:56

标签: sql oracle

在我的查询中(注意我没有使用过程)我需要使用一个布尔参数来定义是否过滤掉某些记录。

我的参数名称是“WO”(=没有)。所以 - 如果用户选择&WO = 'TRUE',我希望过滤掉一些记录。

我的方法是在where子句中使用'case when',如下所示:

select *
from tbl1
where case when &WO = 'TRUE' then tbl1.field1 not in ('AB','CD','EF') end

我知道语法或我的整个方法都不正确。

1 个答案:

答案 0 :(得分:2)

你不能那样使用case; case的结果需要与某些东西进行比较。你可以这样做:

select *
from tbl1
where nvl('&WO', 'FALSE') != 'TRUE'
or tbl1.field1 not in ('AB','CD','EF')

如果or的第一部分等于假 - 即&WO为空或不TRUE - 那么第二部分不会被评估。