SQL 中 `CASE WHEN` 语句的使用
person 陌路人
watch_later 2024-07-08 16:28:45
visibility 399
class mysql,sql,case when
bookmark 分享
SQL 中 CASE WHEN 语句的使用
在 SQL 中,CASE WHEN 语句是一个强大的工具,用于根据条件返回不同的结果。它可以在 SELECT 语句中创建复杂的逻辑,并在实际应用中实现条件查询、分类和计算等功能。
本文将详细介绍 CASE WHEN 语句的使用方法,并提供一些实际应用的示例,帮助您更好地理解和运用这一强大的 SQL 语法。
CASE WHEN 语句的基本语法
CASE WHEN 语句有两种形式:简单 CASE 和搜索 CASE。
简单 CASE 语句
简单 CASE 语句用于根据表达式的值匹配特定的情况:
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE resultN
END
搜索 CASE 语句
搜索 CASE 语句根据不同的条件来匹配特定的情况:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END
示例
假设我们有一个名为 employees 的表,包含以下字段:id、name、salary、department_id 和 performance。我们将通过以下示例展示如何使用 CASE WHEN 语句。
示例 1:根据部门 ID 显示部门名称
我们希望根据 department_id 显示不同的部门名称:
SELECT
id,
name,
department_id,
CASE department_id
WHEN 1 THEN 'HR'
WHEN 2 THEN 'Engineering'
WHEN 3 THEN 'Marketing'
ELSE 'Other'
END AS department_name
FROM employees;
示例 2:根据工资范围分类
我们希望根据员工的工资范围来分类:
SELECT
id,
name,
salary,
CASE
WHEN salary < 3000 THEN 'Low'
WHEN salary >= 3000 AND salary < 7000 THEN 'Medium'
WHEN salary >= 7000 THEN 'High'
END AS salary_category
FROM employees;
示例 3:根据绩效发放奖金
我们希望根据员工的绩效来计算奖金:
SELECT
id,
name,
salary,
salary *
CASE
WHEN performance = 'Excellent' THEN 0.2
WHEN performance = 'Good' THEN 0.1
ELSE 0
END AS bonus
FROM employees;
示例 4:嵌套 CASE 语句
有时我们需要在 CASE 语句中嵌套另一个 CASE 语句。例如,我们希望根据部门和绩效计算奖金:
SELECT
id,
name,
department_id,
salary,
CASE department_id
WHEN 1 THEN salary * 0.1
WHEN 2 THEN
CASE
WHEN performance = 'Excellent' THEN salary * 0.2
WHEN performance = 'Good' THEN salary * 0.15
ELSE salary * 0.1
END
WHEN 3 THEN salary * 0.05
ELSE salary * 0.03
END AS bonus
FROM employees;
总结
CASE WHEN 语句在 SQL 查询中提供了强大的条件判断能力,使得我们可以根据不同的条件返回不同的结果。无论是简单的值匹配还是复杂的条件判断,CASE WHEN 语句都能很好地满足需求。
希望通过本文的介绍和示例,您能更好地理解和运用 CASE WHEN 语句。在实际工作中,它将帮助您编写更加灵活和强大的 SQL 查询。如果您有任何问题或需要进一步的帮助,欢迎留言讨论。
Happy Coding!
chat评论区
评论列表