【发布时间】:2014-08-13 08:31:48
【问题描述】:
我想根据两个变量过滤列,即(在伪代码中):
- A如果第 1 列和第 2 列不为空,则同时过滤 filter1 和 filter2,否则
- B如果第1列不为空,则对filter1进行过滤,否则
- C 如果第 2 列不为空,则在 filter2 上进行过滤
我尝试过以下 PL/SQL 语句:
select * from table t where
((t.column1 is not null and t.column1=filter1 and t.column2 is not null and t.column2=t.filter2) -- condition A
or (t.column1 is not null and t.column1=filter1) -- condition B
or (t.column2 is not null and t.column2=filter2)); -- condition C
虽然我已经检查过它是否适用于每个条件,但它并不适用于所有三个条件。 例如:
- 如果只有条件 A,则有效,
- 或者只有条件 B 和 C 有效。
- 但这不适用于条件 A、B 和 C。
怎么了?请帮忙:)
【问题讨论】:
-
@JoseRuiSantos 提出的解决方案有效,虽然我仍然不知道为什么我的第一次(有点太复杂)尝试没有!干杯