Oracle SQL 不同的 where 子句与 case when

Posted

技术标签:

【中文标题】Oracle SQL 不同的 where 子句与 case when【英文标题】:Oracle SQL different where clauses with case when 【发布时间】:2021-06-07 09:31:25 【问题描述】:

愚蠢的问题,因为我想用 where 子句的两个选项开始一个 select 语句,并停留在我可以过滤它的部分。问题是,我希望选项说“如果 RS_BEM 是 A1 或 A2,则搜索不在列表中的 ID,如果还有其他搜索在列表中的 ID”。

and Case when :RS_BEM like 'A1' or :RS_BEM like 'A2' then ate_msg_nr not in (select * from StoerIDs) else ate_msg_nr in (select * from StoerIDs) end

我敢打赌这非常容易,但不知何故我没有看到它。

【问题讨论】:

【参考方案1】:

使用ANDOR 和括号:

where (:RS_BEM in ('A1', 'A2') and ate_msg_nr not in (select * from StoerIDs))
   or (:RS_BEM not in ('A1', 'A2') and ate_msg_nr in (select * from StoerIDs))

【讨论】:

非常感谢。就是这样。

以上是关于Oracle SQL 不同的 where 子句与 case when的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL 查询与不同的 where 子句组合

在 where 子句中使用 Oracle SQL 变量时遇到问题

在oracle中where 子句和having子句中的区别

PostgreSQL 中的 SQL JOIN - WHERE 子句中的执行计划与 ON 子句中的不同

在oracle中where 子句和having子句中的区别

oracle 形式:pl/sql 中 where 子句中的 max 子句