12. Oracle中case when详解
在Oracle中,CASE语句是一种复杂的条件语句,它允许在查询结果中以不同的方式处理不同的条件。CASE语句可以在SELECT、UPDATE和DELETE语句中使用,但最常见的是在SELECT语句中使用。
以下是一些使用Oracle CASE语句的方法:
- 简单的CASE表达式:
SELECT employee_name,
CASE
WHEN salary < 3000 THEN 'Entry Level'
WHEN salary BETWEEN 3000 AND 7000 THEN 'Mid Level'
ELSE 'Senior Level'
END salary_level
FROM employees;
在这个例子中,我们根据员工的薪水将员工分为'Entry Level', 'Mid Level', 和 'Senior Level'三个等级。
- 搜索的CASE表达式:
SELECT customer_id,
CASE
WHEN account_balance < 0 THEN 'Loss'
WHEN account_balance < 1000 THEN 'Small'
WHEN account_balance < 5000 THEN 'Medium'
ELSE 'Large'
END account_category
FROM customers;
在这个例子中,我们根据客户的账户余额将账户分为 'Loss', 'Small', 'Medium', 和 'Large'四个类别。
- 使用CASE表达式进行聚合:
SELECT
CASE
WHEN salary < 3000 THEN 'Entry Level'
WHEN salary BETWEEN 3000 AND 7000 THEN 'Mid Level'
ELSE 'Senior Level'
END salary_level,
COUNT(*)
FROM
employees
GROUP BY
CASE
WHEN salary < 3000 THEN 'Entry Level'
WHEN salary BETWEEN 3000 AND 7000 THEN 'Mid Level'
ELSE 'Senior Level'
END;
在这个例子中,我们根据员工的薪水等级进行分组,并计算每个等级的员工数量。
- 使用CASE表达式处理空值:
SELECT
employee_name,
salary,
CASE
WHEN salary IS NULL THEN 'Not Available'
ELSE TO_CHAR(salary)
END salary_info
FROM
employees;
在这个例子中,我们将null值替换为'Not Available'字符串。
注意:在Oracle中,CASE表达式的结构如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionN THEN resultN
ELSE result
END
在每个WHEN子句中,可以使用任何有效的条件表达式;在THEN子句中,可以使用任何有效的Oracle表达式。如果没有任何WHEN子句条件满足,那么ELSE子句将被执行。如果没有ELSE子句并且没有任何WHEN子句条件满足,CASE表达式的结果将是NULL。
评论已关闭