首页 > 数据库 >9.3 SQL Server IF ELSE

9.3 SQL Server IF ELSE

时间:2023-01-30 10:46:50浏览次数:47  
标签:语句 BEGIN END sales ELSE 000 SQL Server

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

标签:语句,BEGIN,END,sales,ELSE,000,SQL,Server
From: https://www.cnblogs.com/michaelshen/p/17074747.html

相关文章

  • 9.5 SQL Server游标
    SQLServer游标(CURSOR)目录SQLServer游标(CURSOR)简介什么是数据库游标SQLServer游标生命周期示例简介SQL基于集合进行操作,例如,SELECT语句返回一组称为结果集的行。但......
  • 9.6 SQL Server异常处理
    SQLServer异常处理目录SQLServer异常处理TRYCATCH简介CATCH块中的函数嵌套的TRYCATCH简单示例在事务中使用TRYCATCH的示例THROW简介示例A)以下示例使用THROW语句引......
  • 8.3 SQL Server非聚集索引
    SQLServerNon-ClusteredIndexes(非聚集索引)目录SQLServerNon-ClusteredIndexes(非聚集索引)简介使用SQLServerCREATE[NONCLUSTERED]INDEX创建非聚集索引示例A)使用C......
  • 8.4 SQL Server唯一索引
    SQLServer唯一索引(UniqueIndex)目录SQLServer唯一索引(UniqueIndex)简介示例A)创建包含一列的唯一约束B)创建包含多列的唯一约束SQLServer唯一索引与NULL唯一索引(Uniquei......
  • 8.5 SQL Server包含列索引
    SQLServer索引与包括的列目录SQLServer索引与包括的列简介创建包含列的索引的语法简介本文使用sales.customers表作为示例下面语句在email列创建唯一约束:CREATEU......
  • 8.6 SQL Server筛选索引
    SQLServer筛选索引目录SQLServer筛选索引简介示例筛选索引的优点简介如果使用得当,非聚集索引可以大大提高查询性能。然而,非聚集索引的好处是有代价的:存储和维护。......
  • 8.7 SQL Server计算列上的索引
    SQLServer计算列上的索引目录SQLServer计算列上的索引简介计算列索引的要求简介有如下客户表:查找居住在garry.espinoza的客户:SELECTfirst_name,last......
  • 让Windows Server 2008r2 IIS7.5 ASP.NET 支持10万并发请求
    由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,今天下午由于某种情况造成同时请求超过5000,从而出现了上面的错误。为了避免这样的错误,我们根据相关文档调整了......
  • docker mysql
    dockerpullmysqldockerrun-itd--namemysql-p3307:3306-eMYSQL_ROOT_PASSWORD=123456mysql--character-set-server=utf8mb4--collation-server=utf8......
  • SQL Server 返回了错误 21(设备未就绪。) 解决方法
    https://www.cnblogs.com/xx_cs/archive/2013/05/31/3110881.html在文件'G:\LedDB\LedDB.mdf' 中、偏移量为0x00000001a9a000 的位置执行 读取 期间,操作系统已经向SQL......