SQL Server CASE17 Mar 2025 | 6 分钟阅读 CASE 表达式是控制流函数的一部分,它评估一系列条件并在第一个条件满足时给出输出。它主要用于处理条件语句,与其它编程语言中的 IF-THEN-ELSE 语句相同。CASE 语句评估条件,当发现为真时,它将停止执行并返回结果。如果未发现任何条件为真,它将评估 ELSE 部分以返回值并结束。当未找到 ELSE 块且未满足任何条件时,它将给出 NULL 值。 CASE 表达式可以在使用有效程序或查询的任何地方使用,例如 SELECT、WHERE 和 ORDER BY 子句。它的主要功能是管理 SELECT 子句中的多个 IF 语句。在 MS SQL Server 中,CASE 语句允许用户添加多个条件以执行各种操作集。 CASE 语句的类型MS SQL Server 中有两种形式的 CASE 语句
简单 CASE我们使用简单 CASE 语句进行相等性测试。它通过将表达式与一组多个值进行比较来确定结果。换句话说,此语句逐个评估条件,并在条件和表达式匹配时返回 THEN 子句中指定的表达式。 以下是简单 CASE 语句的语法 这里 CASE 语句通过将表达式(input_expression)与每个 WHEN 子句中定义的值进行比较来检查相等性。如果 input_expression 匹配 WHEN 子句的值,它将给出相应 THEN 子句中的结果语句。如果 input_expression 不匹配任何值且 ELSE 块可用,则 CASE 表达式将返回 ELSE 块的结果。当未找到 ELSE 部分且 input_expression 不匹配 WHEN 子句中的任何值时,CASE 表达式将给出 NULL 值。 示例以下语句解释了 CASE 语句的简单示例 它将显示以下输出 ![]() 让我们解释 CASE 语句在表上的工作原理。以下语句创建一个名为 Tutorials 的表: 接下来,我们将使用以下语句向此表中添加一些记录 我们可以使用 SELECT 语句验证表,该语句显示以下数据 ![]() 以下 SQL CASE 语句评估每个条件并在第一个条件满足时返回值 它将给出以下输出,其中我们可以看到根据 CASE 语句中指定的条件得出的结果 ![]() 搜索 CASE 语句搜索 CASE 语句是一种更全面的表达式评估格式,它评估一组布尔表达式以找到结果。它允许我们在每个布尔表达式中使用比较运算符和逻辑运算符。 以下是简单 CASE 语句的语法 此语句首先按照 CASE 表达式中定义的顺序评估每个 WHEN 子句的 boolean_expression。如果每个 WHEN 子句中的 boolean_expression 评估为 true,则此语句给出相应 THEN 子句的结果。如果评估为 false,则此语句返回 ELSE 块中指定的结果。如果未找到 ELSE 块且 boolean_expression 评估为 true,则 CASE 表达式将返回 NULL。END 子句是可选的。 示例让我们解释 CASE 语句在表上的工作原理。假设我们有一个名为 student 的表,其中包含以下数据 ![]() 以下 SQL CASE 语句评估每个条件并在第一个条件满足时返回值 在上面的示例中,我们可以看到首先 'age' 是 CASE 表达式的一部分。之后,'age' 的值与每个 WHEN 语句进行比较,直到 'age' 与 WHEN 值匹配。这里,每个 WHEN 语句都有自己的条件布尔表达式。直到第一个布尔表达式评估为 TRUE,每个布尔表达式都评估为 TRUE/FALSE。 执行后,它将给出以下输出,其中我们可以看到根据 CASE 语句中指定的条件得出的结果 ![]() 嵌套 CASE 语句我们还可以使用嵌套 CASE 语句。以下示例说明了嵌套 CASE 语句 我们将获得以下输出 ![]() 在上面的示例中,我们首先检查第一个 WHEN 条件 (salary > 25000) 是否为真。如果为 TRUE,我们将进入另一个 WHEN 条件 (salary > 35000)。如果第二个条件变为 TRUE,则学生被分配 '总经理' 的头衔,否则仅为 '经理'。最后,如果没有条件匹配,则学生被指定为 '助理经理'。 CASE 语句与 ORDER BY 子句我们还可以将 CASE 语句与 ORDER BY 子句一起使用,ORDER BY 子句用于以升序或降序排序结果。以下示例更清楚地解释了这一点
此条件可以通过结合使用 ORDER BY 和 CASE 语句来定义。在下面的语句中,我们结合了 ORDER BY 和 CASE 语句,并在 CASE 表达式中描述了排序条件 执行语句后,我们将得到以下输出 ![]() 带 CASE 语句的 UPDATE 语句SQL Server 还允许我们将 CASE 语句与 UPDATE 语句一起使用。假设我们想根据 CASE 语句条件更新学生的年龄。我们可以通过以下条件来实现这一点
我们将在上面的 STUDENT 表中解释此示例。我们可以通过执行以下使用 CASE 语句的更新命令来满足我们的要求 我们将根据我们的要求获得结果 ![]() 返回值CASE 表达式根据其使用的上下文返回结果。例如:
简单 CASE 和搜索 CASE 语句之间的区别以下比较图解释了简单 CASE 和搜索 CASE 语句之间的主要区别
CASE 语句的限制以下是 CASE 语句的限制
下一个主题SQL Server JOIN |
我们请求您订阅我们的新闻通讯以获取最新更新。