SQLServer 利用Case When Then多条件判断
在 30000 和 70000 之间(包括 30000,不包括 70000,因为 BETWEEN 是半开区间),则返回 ‘Medium’;不符合上述任何条件(这在逻辑上是不可能的,除非有 NULL 值或其他异常情况),则返回 ‘Unknown’(由于我们提供了。它允许你在查询中基于不同的条件返回不同的值。你想根据员工的薪水等级给他们分配一个薪水类别(例如:低、中、高)。不过,在使用时要确保逻辑正确
在 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 语句的投影列表中使用,也可以在 WHERE、ORDER BY、HAVING 等子句中使用,甚至可以在 INSERT、UPDATE 和 DELETE 语句中使用。不过,在使用时要确保逻辑正确,并考虑到可能的异常情况。
更多推荐



所有评论(0)