SQL Server IF ELSE

17 Mar 2025 | 4 分钟阅读

IF 语句是 SQL Server 中控制流函数的一部分。 通常,它是在各种编程语言中基于给定条件做出决定的语句,根据给定条件返回一个值。 当给定条件计算结果为 true 时,此语句执行在 IF 块中编写的代码,当条件计算结果为 false 时,则执行 ELSE 语句。

IF 语句

以下是说明在 SQL Server 中使用此语句的语法

在上面的语法中,当 boolean_expression 满足条件时,将执行 BEGIN...END 块中的 statement_block。 否则,此块将被跳过,程序控制权将移至 END 关键字后的语句。 我们应该知道,如果表达式包含 SELECT 语句,我们需要将它们 括在括号中

示例

让我们看一个例子来了解没有 ELSE 块的 IF 语句。 以下示例将在满足条件时显示结果。 否则,程序控制权将移至 END 关键字之后的语句(如果有)。

执行该语句将给出以下输出

SQL Server IF ELSE

现在,我们将在下面的 'Student' 表上演示它,其中包含以下数据

SQL Server IF ELSE

下面是另一个示例,它从样本数据库的 'Student' 表中获取选定学生的 总分,然后如果 大于 400,则打印一条 消息

我们将获得以下输出

SQL Server IF ELSE

如果我们要看到上述输出消息,应该单击 消息 选项卡

SQL Server IF ELSE

IF-ELSE 语句

在现实世界中,每当 IF 语句中的条件为 TRUE 或 FALSE 时,我们都需要执行某些操作。 在这种情况下,IF…ELSE 语句很有用。 当 IF 子句中的条件计算结果为 FALSE 时,此语句执行 ELSE 语句块。

以下是说明在 SQL Server 中使用 IF ELSE 语句的语法:

示例

让我们看一个例子来了解带有 ELSE 块的 IF 语句。 以下示例将在 IF 条件满足时显示消息“恭喜! 你通过了考试”。 否则,显示“你失败了! 祝你下次好运”。

执行该语句将给出以下输出。 在这里,marks 变量是 65,并且 条件 (65<45) 不满足。 因此,显示 ELSE 块中的消息

SQL Server IF ELSE

我们将获得此输出,因为条件 (65>45) 满足。 因此,显示 IF 块内的消息

SQL Server IF ELSE

现在,我们将在上面的 'Student' 表上演示 IF ELSE 语句。 在此示例中,我们将检查学生的 总分 是否 大于或等于 400,如下所示

  • 当 IF 条件为 TRUE 时,我们将获得总分大于或等于 550 的学生记录。
  • 如果条件为 FALSE,我们将获得总分小于 550 的学生记录。

这是程序

在此代码中,我们将 @Marks 变量指定为 600,并且条件 (600 >= 550) 得到满足。 因此,我们将获得输出,其中显示了总分大于或等于 550 的学生记录。

SQL Server IF ELSE

如果我们将 @Marks 变量更改为 500,并且条件 (500 >= 550) 变为 false。 因此,我们将获得输出,其中显示了总分小于 550 的学生记录。

SQL Server IF ELSE

嵌套 IF ELSE 语句

与其他编程语言不同,我们可以在 SQL Server 中将 IF...ELSE 语句嵌套在另一个 IF...ELSE 语句中。 让我们用下面的例子来演示它

在此示例中,我们将检查 年龄是未成年人、低于 50 岁还是老年人,如下所示

  • 如果 @age 变量的值低于 18,它将打印该人是 未成年人
  • 如果条件为 FALSE,将执行包含嵌套 IF…ELSE 的 ELSE 部分。
  • 如果 @age 变量的值低于 50,它将打印 低于 50 岁。 最后,如果没有任何条件得到满足,它将打印 老年人

这是结果:

SQL Server IF ELSE

本文全面概述了如何使用 SQL Server IF ELSE 语句。 在这里,我们学习了

  • 变量是充当占位符的对象。
  • 关键字 BEGIN 将用于启动语句块,并且必须使用 END 关键字来关闭它。
  • 在 IF... ELSE 语句中使用 ELSE 是可选的。
  • 将 IF...ELSE 语句嵌套在另一个 IF...ELSE 语句中也是可能的。 但是,将 IF 语句嵌套在另一个语句中是不好的做法,因为它使代码难以阅读和维护。