SQL CASE2025年2月2日 | 5 分钟阅读 CASE 语句是一种操作 if-then-else 类型逻辑查询的语句。当指定的条件求值为 True 时,此语句将返回值。当没有条件求值为 True 时,它将返回 ELSE 部分的值。 当没有 ELSE 部分且没有条件求值为 True 时,它将返回 NULL 值。 在结构化查询语言中,CASE 语句用于 SELECT、INSERT 和 DELETE 语句,包含以下三个子句:
SQL 中的此语句始终后跟至少一对 WHEN 和 THEN 语句,并始终以 END 关键字结束。 关系数据库中的 CASE 语句有两种类型:
SQL 中 CASE 语句的语法在此,CASE 语句逐个评估每个条件。 如果表达式与第一个 WHEN 子句的条件匹配,它将跳过所有后续的 WHEN 和 THEN 条件,并在结果中返回 statement_1。 如果表达式与第一个 WHEN 条件不匹配,它将与第二个 WHEN 条件进行比较。此匹配过程将一直持续到表达式与任何 WHEN 条件匹配为止。 如果没有条件与表达式匹配,控制将自动转到 ELSE 部分并返回其结果。在 CASE 语法中,ELSE 部分是可选的。 在语法中,CASE 和 END 是最重要的关键字,它们表示 CASE 语句的开始和结束。 SQL 中 CASE 语句的示例让我们来看 Student_Details 表,它包含学生的 roll_no、name、marks、subject 和 city。
示例 1:以下 SQL 语句将单个 WHEN 和 THEN 条件用于 CASE 语句。 上述查询的解释 在此,CASE 语句检查 **Stu_Marks** 是否大于等于 50,如果是,则在 **Student_Result** 列中返回 **Student_Passed**,否则将移动到 **ELSE** 部分并返回 **Student_Failed**。 输出
示例 2:以下 SQL 语句向 CASE 语句添加了多个 WHEN 和 THEN 条件。 上述查询的解释 在此,CASE 语句逐个检查多个 WHEN 和 THEN 条件。如果 **Stu_Marks** 列的值大于等于 **90**,则返回 **Outstanding**,否则将继续检查后续的 WHEN 和 THEN 条件。 如果 **Student_Details** 表中没有任何条件匹配,CASE 将在 **Stu_Remarks** 列中返回 **NULL** 值,因为查询中没有 ELSE 部分。 输出
示例 3 让我们来看另一个 Employee_Details 表,它包含 Emp_ID、Emp_Name、Emp_Dept 和 Emp_Salary。
以下 SQL 查询使用 GROUP BY 子句和 CASE 语句。 输出
示例 4:在此示例中,我们在 SQL 中使用 ORDER BY 子句和 CASE 语句。 让我们来看另一个 Employee_Details 表,它包含 Emp_ID、Emp_Name、Emp_Dept 和 Emp_Age。 我们可以使用以下 SQL 查询来检查 Employee_Details 的数据。 输出
以下 SQL 查询按员工姓名升序显示所有员工的详细信息。 输出
如果您想将在 Coding Department 工作的员工排在前面,那么对于此操作,您需要使用 CASE 语句中的单个 WHEN 和 THEN 语句,如以下查询所示。 输出
下一个主题SQL Inner Join |
我们请求您订阅我们的新闻通讯以获取最新更新。