是否可以动态跳过where子句?
我正在努力实现同样的目标。
select count(*)
into user_count
from mstuser a
where ((gender_compare is not null or gender_compare != '')
and upper(a.gender)=upper(gender_compare))
and (age_compare_group is not null or age_compare_group != '')
and (MONTHS_BETWEEN(sysdate, a.dob) / 12
between substr(age_compare_group, 0, INSTR(age_compare_group, '-') - 1)
and substr(age_compare_group, INSTR(age_compare_group, '-') + 1)))
但是好像不行。
我想要的是:
如果值 gender_compare
和 age_compare_group
都为 null,它应该给出所有结果。
如果其中任何一个不为空,那么它应该根据查询的 where 部分显示结果。
让我知道我是否可以为此做一些其他事情。
最佳答案
看起来你要做的是将你的情况分成两组
WHERE (gender_compare IS NULL OR gender_compare = '')
OR (<the rest of condition>)
如果 genter_compare IS NULL
的计算结果为 TRUE
,则整个条件将为 TRUE
,因此 WHERE
子句将等同于 WHERE TRUE
,相当于根本没有 WHERE
语句。
否则,第二个条件有效。
关于sql - 动态跳过 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20344877/