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语句嵌套在另一个语句中,因为这样会使代码难以阅读和维护。

posted @   平元兄  阅读(2780)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek “源神”启动!「GitHub 热点速览」
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示