首页 > 解决方案 > 在 Oracle SQL 的 Where 子句中使用 Case 语句

问题描述

我有一个如下的选择语句

select * 
from employees 
where emp_id <= v_emp_id;

如果国家不是美国,我希望这emp_id是。<= v_emp_id

如果国家是美国,那么我想emp_id成为= v_usa_emp_id

标签: selectconditional-statementscasewhere-clauseoracle12c

解决方案


你的问题有点模棱两可。我假设这是数据类型country表中的一个属性。employeesVARCHAR

SELECT * FROM employees
WHERE 
    (emp_id = v_emp_id AND country = 'USA') 
    OR (emp_id <= v_emp_id AND country != 'USA')

您可能想看看WHEREORAND

引用OR上面链接的页面:

如果在一条语句中使用多个逻辑运算符,Oracle 会在 NOT 和 AND 运算符之后计算 OR 运算符。但是,您可以使用括号更改计算顺序。


推荐阅读