SQL 中 `CASE WHEN` 语句的使用

person 陌路人    watch_later 2024-07-08 16:28:45
visibility 148    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 的表,包含以下字段:idnamesalarydepartment_idperformance。我们将通过以下示例展示如何使用 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!

评论区
评论列表
menu