Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:使用if语句设置变量_Sql_Sql Server_If Statement_Case - Fatal编程技术网

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

SQL Server:使用if语句设置变量,sql,sql-server,if-statement,case,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 S

我从变量中传递了两个值:

@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
您需要使用:

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{..}
语句(或其他编程语言中的等效语句)-它是NOT流控制语句


因此,基本上您需要定义案例条件,然后从
案例中返回一个或另一个值

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

Microsoft SQL管理
null
'
在tsql中是不同的。@rzry1911我想是的。