oracle语句中case在where 中的用法
时间: 2024-05-08 09:20:45 浏览: 13
在Oracle语句中,CASE表达式可以用于WHERE子句中,以便根据条件过滤行。例如,以下是一个使用CASE表达式的WHERE子句示例:
```
SELECT *
FROM employees
WHERE CASE
WHEN department_id = 10 THEN salary * 1.1
WHEN department_id = 20 THEN salary * 1.2
WHEN department_id = 30 THEN salary * 1.3
ELSE salary
END > 5000;
```
在这个例子中,WHERE子句使用CASE表达式来计算每个员工的工资,如果工资大于5000,则返回该行。在CASE表达式中,根据员工的部门ID,将工资乘以不同的系数。如果员工部门ID不是10、20或30,则返回原始工资。
需要注意的是,CASE表达式必须返回一个标量值,因为它将用于比较。如果返回的值为TRUE,则返回该行。如果返回的值为FALSE或NULL,则不返回该行。
相关问题
oracle case when 能不能在where 语句中使用
可以在 WHERE 语句中使用 Oracle 的 CASE WHEN 语句。通常情况下,CASE WHEN 语句用于 SELECT 语句中来对结果进行条件判断和转换。但是,它也可以用于 WHERE 语句中来构建更复杂的查询条件。例如,以下查询使用 CASE WHEN 在 WHERE 语句中来过滤出工资在 3000 到 5000 之间的员工:
```
SELECT *
FROM employees
WHERE
CASE
WHEN salary >= 3000 AND salary <= 5000 THEN 1
ELSE 0
END = 1;
```
上述查询中,CASE WHEN 语句返回 1 或 0,用于判断每个员工的工资是否在指定范围内。如果返回值为 1,则表示符合条件,数据会被返回。
oracle中case when用法
Oracle中的case when语句用于判断一个条件是否成立,根据条件的成立情况返回不同的值。语法如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
```
其中condition1, condition2等为条件,result1, result2等为条件成立时返回的值。当所有条件都不成立时,会返回ELSE后面的result值。
例如:
```
SELECT
CASE
WHEN salary < 5000 THEN 'Low'
WHEN salary >= 5000 AND salary <= 10000 THEN 'Medium'
ELSE 'High'
END
AS "Salary Level"
FROM employees;
```
这个语句会对employees表中的每一行数据,根据salary字段的值判断属于Low,Medium还是High类型。
CASE语句还可以用于字段更新,如:
```
UPDATE employees
SET
salary = CASE
WHEN job_id = 'IT_PROG' THEN salary*1.1
WHEN job_id = 'SALESMAN' THEN salary*1.15
WHEN job_id = 'ANALYST' THEN salary*1.2
ELSE salary
END
WHERE
job_id IN ('IT_PROG', 'SALESMAN', 'ANALYST');
```
这个语句会对job_id为IT_PROG,SALESMAN,ANALYST的员工的工资进行提高。