SQL Server IF…ELSE 条件语句:T-SQL SELECT 查询示例
为什么需要条件语句?
SQL Server 中的条件语句可以帮助您为不同的条件定义不同的逻辑和操作。它允许您根据语句中定义的条件执行不同的操作。在现实生活中,您会执行许多依赖于其他活动或情况结果的操作。
SQL CASE 语句的一些实时示例是
- 如果明天下雨,我将计划一次公路旅行。
- 如果我所在城市的机票低于 400 美元,那么我将在欧洲度假,否则我将选择附近的旅游景点。
在这里,您可以看到一个操作,例如上面提到的公路旅行,是“取决于明天的天气是否会下雨!”的结果的条件依赖。
类似地,MS SQL 也提供了有条件地执行 T-SQL 语句的功能。
SQL Server 中的 IF…Else 语句
在MS SQL 中,IF…ELSE 是一种条件语句。
任何 T-SQL 语句都可以使用 IF… ELSE 有条件地执行。
下图解释了 SQL Server 中的 IF ELSE
- 如果条件评估为True,则将执行 SQL Server 中 IF 条件后的 T-SQL 语句。
- 如果条件评估为False,则将执行 ELSE 关键字后的 T-SQL 语句。
- 一旦 IF T-SQL 语句或 ELSE T-SQL 语句被执行,其他无条件 T-SQL 语句将继续执行。
SQL 中的 IF…Else 语法和规则
语法
IF <Condition> {Statement | Block_of_statement} [ ELSE {Statement | Block_of_statement}]
标尺
- 条件应该是布尔表达式,即条件在评估时结果为布尔值。
- SQL 中的 IF ELSE 语句可以有条件地处理单个 T-SQL 语句或 T-SQL 语句块。
- 语句块应以关键字 BEGIN 开头,以关键字 END 结尾。
- 使用 BEGIN 和 END 有助于 SQL Server 识别需要执行的语句块,并将其与不属于 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'
条件:False
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
假设:假设您有一个名为‘Guru99’的表,其中包含两列和四行,如下所示
我们将在后续示例中使用“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
条件: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 使用 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
条件: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
带 No Else 的 IF 语句
您可以在 SQL 中使用 IF 语句而不使用 ELSE 部分。请记住,我们说过 ELSE 部分是可选的。例如
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) Select * from Guru99 where Tutorial_ID = 1
它将打印以下内容
执行 False 条件将不会产生任何输出。考虑以下查询
DECLARE @Course_ID INT = 2 IF (@Course_ID <=0) Select * from Guru99 where Tutorial_ID = 1
结果是
嵌套 IF…Else 语句
与许多其他编程语言不同,您不能在 SQL 中的 IF ELSE 条件内添加 ELSE IF 语句。这就是为什么您可以嵌套 IF ELSE 到 SQL 查询语句中。下面将对此进行演示
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,代码将打印 underage。
- 否则,将执行 ELSE 部分。ELSE 部分包含一个嵌套的 IF…ELSE。
- 如果 @age 的值小于 50,它将打印 You are below 50。如果这些条件都不为真,代码将打印 Senior。
摘要
- 变量是充当占位符的对象。
- 语句块应以关键字 BEGIN 开头,以关键字 END 结尾。
- 在 IF… ELSE 语句中使用 Else 是可选的
- 将 SQL IF ELSE 条件嵌套在另一个 IF…ELSE 语句中也是可能的。