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 的执行是否保证排除之前的语句?
是的,它们是一样的。只会执行一个条件,条件的顺序很重要
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,那就是行为发生变化的时候。你的例子很好。
在 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 的执行是否保证排除之前的语句?
是的,它们是一样的。只会执行一个条件,条件的顺序很重要
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,那就是行为发生变化的时候。你的例子很好。