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我想是的。