T-SQL 是否允许多个 ELSE IF?或者我必须嵌套条件? SQL 服务器 2012

Does T-SQL allow multiple ELSE IF? Or must I nest conditionals? SQL Server 2012

在 C# 中,您可以有多个条件,其中只有一个会执行:

if (Condition1)
{
    // Condition1 is true.
}
else if (Condition2)
{
    // Condition1 is false and Condition2 is true.
}
else if (Condition3)
{
    // Condition1 is false and Condition2 is false and Condition3 is true.
}
else
{
    // Condition1, Condition2, and Condition3 are false.
}

但是同样的逻辑在 T-SQL 中是否有效,还是必须嵌套语句?这会像上面的代码一样执行吗?

IF @variable1 = 1
    BEGIN
        --@variable1 = 1
    END
ELSE IF @variable1 = 2
    BEGIN
        --@variable1 = 2
    END
ELSE IF @variable3 = 3
    BEGIN
        --@variable1 = 3
    END
ELSE
    BEGIN
        --@variable1 > 3
    END

我在这里可能是错的,但是如果 SQL 不允许多个像 C# 这样的条件?例如,每一个新的 ELSE IF 的执行是否保证排除之前的语句?

是的,它们是一样的。只会执行一个条件,条件的顺序很重要

LiveDemo

DECLARE @variable1 INT = 2
        ,@variable3 INT = 3;

IF @variable1 = 1
    BEGIN
        SELECT 'First IF'
    END
ELSE IF @variable1 = 2
    BEGIN
         SELECT 'Second IF'
    END
ELSE IF @variable3 = 3
    BEGIN
         SELECT 'Third IF'
    END
ELSE
    BEGIN
         SELECT 'Else Clause'
    END

在 C# 和 SQL 服务器的情况下,ELSE 关键字表示只有条件有效的 IF 语句下面的一个块将被执行。如果没有 ELSE,那就是行为发生变化的时候。你的例子很好。