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:
- 如果条件评估结果为 真正, 然后是 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'
条件: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
没有 Else 的 IF 语句
您可以在 SQL 中使用不带 ELSE 部分的 IF 语句。请记住,我们说过 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 语句。这就是为什么您可以在 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。
结语
- 变量是充当占位符的对象。
- 语句块应以关键字 BEGIN 开始并以关键字 END 结束。
- 在 IF…ELSE 语句中,Else 是可选的
- 在另一个 IF…ELSE 语句中嵌套 SQL IF ELSE 条件也是可能的。