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)