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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek “源神”启动!「GitHub 热点速览」
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器