在 SQL Server 中,CASE 表达式是一种用于条件逻辑判断的强大工具。它允许你在查询中基于不同的条件返回不同的值。CASE 表达式有两种主要形式:简单 CASE 表达式和搜索 CASE 表达式。然而,在大多数情况下,我们使用的是搜索 CASE 表达式,因为它允许基于多个条件进行判断。

搜索 CASE 表达式的基本语法如下:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    [ELSE else_result]
END
  • condition1, condition2, … 是你要评估的布尔表达式。
  • result1, result2, … 是当相应条件为真时要返回的值。
  • ELSE else_result 是可选的,当所有条件都不满足时返回的值。如果省略 ELSE 部分,并且没有条件为真,则 CASE 表达式返回 NULL

下面是一个使用 CASE WHEN THEN 进行多条件判断的示例:

假设你有一个名为 Employees 的表,包含以下列:EmployeeID, FirstName, LastName, Salary, 和 DepartmentID。你想根据员工的薪水等级给他们分配一个薪水类别(例如:低、中、高)。

SELECT
    EmployeeID,
    FirstName,
    LastName,
    Salary,
    DepartmentID,
    CASE
        WHEN Salary < 30000 THEN 'Low'
        WHEN Salary BETWEEN 30000 AND 70000 THEN 'Medium'
        WHEN Salary > 70000 THEN 'High'
        ELSE 'Unknown' -- 这是一个可选的 ELSE 子句,用于处理不符合上述任何条件的情况
    END AS SalaryCategory
FROM
    Employees;

在这个查询中,CASE 表达式根据 Salary 列的值来判断每个员工的薪水类别。如果 Salary 小于 30000,则返回 ‘Low’;如果 Salary 在 30000 和 70000 之间(包括 30000,不包括 70000,因为 BETWEEN 是半开区间),则返回 ‘Medium’;如果 Salary 大于 70000,则返回 ‘High’。如果 Salary 不符合上述任何条件(这在逻辑上是不可能的,除非有 NULL 值或其他异常情况),则返回 ‘Unknown’(由于我们提供了 ELSE 子句)。

请注意,CASE 表达式是 SQL 的一部分,它可以在 SELECT 语句的投影列表中使用,也可以在 WHEREORDER BYHAVING 等子句中使用,甚至可以在 INSERTUPDATEDELETE 语句中使用。不过,在使用时要确保逻辑正确,并考虑到可能的异常情况。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐