SQL Server:使用if语句设置变量

时间:2015-07-14 10:13:11

标签: sql sql-server if-statement case

我从变量传递了两个值:

@F_START_DATE_DT VARCHAR(50)
@F_END_DATE_DT VARCHAR(50)

我还有其他参数声明:

DECLARE @sSQL NVARCHAR(4000)

我想检查前两个变量是否为空并执行类似但正确的操作:

SELECT CASE WHEN @F_START_DATE_DT OR @F_END_DATE_DT IS NULL THEN 
SET @sSQL = 'select * from test_sql1'
ELSE
SET @sSQL = 'select * from test_sql2'
END

2 个答案:

答案 0 :(得分:3)

这样的东西就足够了。

IF @F_START_DATE_DT IS NULL OR @F_END_DATE_DT IS NULL
    BEGIN
        SET @sSQL = 'SELECT * FROM test_sql1'
    END
ELSE
    BEGIN
        SET @sSQL = 'SELECT * FROM test_sql2'
    END

答案 1 :(得分:2)

您需要使用:

SELECT 
    @sSQL = CASE 
                WHEN @F_START_DATE_DT IS NULL OR @F_END_DATE_DT IS NULL 
                   THEN 'select * from test_sql1'
                   ELSE 'select * from test_sql2'
            END 
T-SQL中的

CASE表达式 - 它返回几个可能值中的一个。 NOT 等同于C#中的switch {....}语句(或其他编程语言中的等效语句) - 它一个流控制语句。< / p>

所以基本上你需要定义你的案例条件,然后从CASE返回一个或另一个值。