SQL Server If Else語句

在本教學中,將學習SQL Server IF...ELSE語句來控制程式的流程。

IF...ELSE語句是一個控制流語句,用於根據指定的條件執行或跳過語句塊。

IF語句

以下是IF語句的語法:

IF boolean_expression
BEGIN
    { statement_block }
END

在此語法中,如果Boolean_expression的計算結果為TRUE,則執行BEGIN...END塊中的statement_block。 否則,將跳過statement_block,並將程式的控制權傳遞給END關鍵字之後的語句。

請注意,如果布爾運算式包含SELECT語句,則必須將SELECT語句括在括弧中。

以下示例首先從示例資料庫中的sales.order_items表中獲取銷售額。 然後,如果銷售額大於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

IF ELSE聲明

IF子句中的條件求值為FALSE時,並且想要執行另一個語句塊時,可以使用ELSE子句。

以下說明IF ELSE語句:

IF Boolean_expression
BEGIN
    -- 當布爾運算式為TRUE時,將執行此語句塊

END
ELSE
BEGIN
    -- 當布爾運算式為FALSE時,將執行此語句塊

END

每個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

在此示例中,獲取2017年的銷售額。在IF子句中檢查銷售額是否大於1000萬。 由於銷售額小於該值,因此ELSE子句中的語句塊將執行。

以下顯示輸出:

Sales amount did not reach 10,000,000

嵌套IF…ELSE語句

可以在一個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語句中是一個好習慣,因為它會使代碼難以閱讀並且難以維護。

在本教學中,學習了如何使用SQL Server IF...ELSE語句來控制代碼執行流程。


上一篇: SQL Server存儲過程 下一篇: SQL Server用戶定義函數