9.3 SQL Server IF ELSE
SQL Server IF ELSE
简介
IF... ELSE 语句是一种控制流语句,允许根据指定的条件执行或跳过语句块。
IF语句
语法:
| IF boolean_expression | |
| BEGIN | |
| 语句块 | |
| END |
在此语法中,如果boolean_expression为true,则执行BEGIN...END块中的语句块。否则,语句块将被跳过,并且程序的控制将传递给END关键字之后的语句。
注意,如果布尔表达式(boolean_expression)包含SELECT语句,则必须将SELECT语句括在括号中。
示例
下面的示例首先从示例数据库中的 sales.order_items(销售订单) 表中获取2018年销售额,如果销售额大于100万则打印一条消息。
| BEGIN | |
| DECLARE @sales INT; | |
| SELECT | |
| @sales = SUM(list_price * quantity) | |
| FROM | |
| sales.order_items i | |
| INNER JOIN sales.orders o ON o.order_id = i.order_id | |
| WHERE | |
| YEAR(order_date) = 2018; | |
| SELECT @sales; | |
| IF @sales > 1000000 | |
| BEGIN | |
| PRINT 'Great! The sales amount in 2018 is greater than 1,000,000'; | |
| END | |
| END |
输出:
| Great! The sales amount in 2018 is greater than 1,000,000 |
注意,您必须单击Messages选项卡才能看到上述输出消息:

IF ELSE语句
当IF子句中的条件值为FALSE并且想要执行另一个语句块时,可以使用ELSE子句。
语法:
| IF Boolean_expression | |
| BEGIN | |
| -- 布尔表达式为TRUE时执行语句块 | |
| END | |
| ELSE | |
| BEGIN | |
| -- 布尔表达式为FALSE时执行语句块 |
每个IF语句都有一个条件。如果条件的计算结果为TRUE,则执行IF子句中的语句块。如果条件为FALSE,则执行ELSE子句中的代码块。
示例:
| BEGIN | |
| DECLARE @sales INT; | |
| SELECT | |
| @sales = SUM(list_price * quantity) | |
| FROM | |
| sales.order_items i | |
| INNER JOIN sales.orders o ON o.order_id = i.order_id | |
| WHERE | |
| YEAR(order_date) = 2017; | |
| SELECT @sales; | |
| IF @sales > 10000000 | |
| BEGIN | |
| PRINT 'Great! The sales amount in 2018 is greater than 10,000,000'; | |
| END | |
| ELSE | |
| BEGIN | |
| PRINT 'Sales amount in 2017 did not reach 10,000,000'; | |
| END | |
| END |
输出:
| Sales amount did not reach 10,000,000 |
嵌套IF…ELSE
SQL Server允许您将IF…ELSE语句嵌套在另一个IF…ELSE语句中,见以下示例:
| BEGIN | |
| DECLARE @x INT = 10, | |
| @y INT = 20; | |
| IF (@x > 0) | |
| BEGIN | |
| IF (@x < @y) | |
| PRINT 'x > 0 and x < y'; | |
| ELSE | |
| PRINT 'x > 0 and x >= y'; | |
| END | |
| END |
此示例是在IF语句中嵌套了一个IF…ELSE
输出:
| x > 0 and x < y |
但是最好不要将IF语句嵌套在另一个语句中,因为这样会使代码难以阅读和维护。
分类: SQL Server
漫思
浙公网安备 33010602011771号