在Oracle数据库中,`CASE`语句用于在SQL查询中进行条件逻辑操作。它允许你在查询的结果集中基于某些条件来改变行的值。`CASE`语句有两种形式:简单的`CASE`和搜索的`CASE`。
### 简单的CASE表达式
简单的`CASE`表达式用于基于某些条件返回特定的值。其语法如下:
```sql
CASE expression
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result_else
END;
```
示例:
假设有一个名为`employees`的表,其中包含员工的薪水信息。你可以使用简单的`CASE`表达式来根据薪水区间返回相应的薪资等级:
```sql
SELECT employee_name, salary,
CASE
WHEN salary <= 5000 THEN 'Low'
WHEN salary BETWEEN 5001 AND 10000 THEN 'Medium'
ELSE 'High'
END AS salary_grade
FROM employees;
```
### 搜索的CASE表达式
搜索的`CASE`表达式允许你执行更复杂的逻辑操作,它类似于编程语言中的if-else结构。其语法如下:
```sql
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result_else
END;
```
示例:
假设有一个员工表格,你想要根据员工的工作年限来判断其是否是新手或经验丰富的员工:
```sql
SELECT employee_name, years_of_service,
CASE
WHEN years_of_service <= 3 THEN 'New Employee'
WHEN years_of_service > 3 AND years_of_service <= 8 THEN 'Experienced Employee'
ELSE 'Senior Employee'
END AS job_experience_grade
FROM employees;
```
在上面的例子中,如果员工的年限小于或等于三年,他们被认为是新员工;如果他们的年限在三年到八年之间,他们被认为是经验丰富的员工;否则,他们是资深员工。这些结果将作为新的列返回。