SQL Server IF…ELSE 条件语句:T-SQL 选择查询示例

为什么需要条件语句?

SQL 服务器中的条件语句可帮助您针对不同条件定义不同的逻辑和操作。它允许您根据语句中定义的条件执行不同的操作。在现实生活中,您会根据其他活动或情况的结果执行许多操作。

SQL 案例语句的一些实时示例包括:

  • 如果明天下雨,我会计划公路旅行。
  • 如果从我所在的城市出发的机票价格低于 400 美元,那么我会去欧洲度假,否则我会选择一些附近的旅游景点。

在这里,你可以看到一个动作,比如上面的公路旅行,是 有条件地依赖 另一项活动的结果就是“明天会不会下雨!”

同样,MS SQL 也提供了有条件执行 T-SQL 语句的功能。

SQL Server 中的 IF…Else 语句

In MS SQL, 如果别的 是一种类型的 条件语句.

任何 T-SQL 语句都可以使用以下条件执行 如果别的.

下图解释了 SQL 服务器中的 IF ELSE:

If 和 Else 的工作原理
if 和 else 如何工作
  • 如果条件评估结果为 真正, 然后是 T-SQL 语句 IF SQL 服务器中的条件将被执行。
  • 如果条件评估结果为 假的, 然后是 T-SQL 语句 ELSE 关键字将被执行。
  • 一旦执行了 IF T-SQL 语句或 ELSE T-SQL 语句,其他无条件 T-SQL 语句就会继续执行。

SQL 中的 IF…Else 语法和规则

语法:

IF <Condition>
     {Statement | Block_of_statement}   
[ ELSE   
     {Statement | Block_of_statement}]

规则:

  • 条件应该是 布尔表达式即, 条件评估后产生布尔值。
  • IF ELSE 语句 SQL 可以有条件地处理单个 T-SQL 语句或 T-SQL 语句块。
  • 语句块应以关键字 BEGIN 开始并以关键字 END 结束。
  • 使用 BEGIN 和 END 有助于 SQL 服务器识别需要执行的语句块并将其与不属于 IF…ELSE T-SQL 块的其余 T-SQL 语句分开。
  • ELSE 是可选的。

IF…ELSE 布尔表达式中只有一个数值。

条件:TRUE

IF (1=1)
PRINT 'IF STATEMENT: CONDITION IS TRUE'
ELSE
PRINT 'ELSE STATEMENT: CONDITION IS FALSE'

布尔表达式中只有一个数值的 IF…ELSE

条件:FALSE

IF (1=2)
PRINT 'IF STATEMENT: CONDITION IS TRUE'
ELSE
PRINT 'ELSE STATEMENT: CONDITION IS FALSE'

布尔表达式中只有一个数值的 IF…ELSE

假设: 假设你有如下表格 'Guru99' 如下所示,有两列四行:

布尔表达式中只有一个数值的 IF…ELSE

我们将使用 'Guru99' 进一步的例子中的表格

IF…ELSE 与布尔表达式中的变量。

条件:TRUE

DECLARE @Course_ID INT = 4

IF (@Course_ID = 4)
Select * from Guru99 where Tutorial_ID = 4
ELSE
Select * from Guru99 where Tutorial_ID != 4

布尔表达式中的变量为 IF...ELSE

条件:FALSE

DECLARE @Course_ID INT = 4

IF (@Course_ID != 4)
Select * from Guru99 where Tutorial_ID = 4
ELSE
Select * from Guru99 where Tutorial_ID != 4

布尔表达式中的变量为 IF...ELSE

IF…ELSE 和 Begin End

条件:TRUE

DECLARE @Course_ID INT = 2

IF (@Course_ID <=2)
	BEGIN
	Select * from Guru99 where Tutorial_ID = 1
	Select * from Guru99 where Tutorial_ID = 2
	END
ELSE
	BEGIN
	Select * from Guru99 where Tutorial_ID = 3
	Select * from Guru99 where Tutorial_ID = 4
	END

IF...ELSE 带 Begin End

条件:FALSE

DECLARE @Course_ID INT = 2

IF (@Course_ID >=3)
	BEGIN
	Select * from Guru99 where Tutorial_ID = 1
	Select * from Guru99 where Tutorial_ID = 2
	END
ELSE
	BEGIN
	Select * from Guru99 where Tutorial_ID = 3
	Select * from Guru99 where Tutorial_ID = 4
	END

IF...ELSE 带 Begin End

没有 Else 的 IF 语句

您可以在 SQL 中使用不带 ELSE 部分的 IF 语句。请记住,我们说过 ELSE 部分是可选的。例如:

DECLARE @Course_ID INT = 2

IF (@Course_ID <=2)
	Select * from Guru99 where Tutorial_ID = 1

它打印以下内容:

没有 Else 的 IF 语句

执行 false 条件将不会产生任何输出。考虑以下查询

DECLARE @Course_ID INT = 2

IF (@Course_ID <=0)
	Select * from Guru99 where Tutorial_ID = 1

结果是

没有 Else 的 IF 语句

嵌套 IF…Else 语句

不像其他 编程语言,您不能在 SQL 中的 IF ELSE 条件中添加 ELSE IF 语句。这就是为什么您可以在 SQL 查询语句中嵌套 IF ELSE。如下所示:

 DECLARE @age INT;
SET @age = 60;

IF @age < 18
   PRINT 'underage';
ELSE
BEGIN
   IF @age < 50
      PRINT 'You are below 50';
   ELSE
      PRINT 'Senior';
END;
  • 在此示例中,如果@age 的值低于 18,代码将打印未成年。
  • 如果不是,则执行 ELSE 部分。ElSE 部分有嵌套的 IF…ELSE。
  • 如果@age 的值低于 50,则会打印 You are below 50。如果这些条件都不成立,则代码将打印 Senior。

嵌套 IF…Else 语句

结语

  • 变量是充当占位符的对象。
  • 语句块应以关键字 BEGIN 开始并以关键字 END 结束。
  • 在 IF…ELSE 语句中,Else 是可选的
  • 在另一个 IF…ELSE 语句中嵌套 SQL IF ELSE 条件也是可能的。