Sql WHERE子句的条件(全部或不相等)
我有一些身份,不知道有多少。我必须只给一个条件。比如说 @isIncludeClose是参数Sql WHERE子句的条件(全部或不相等),sql,tsql,sql-server-2012,Sql,Tsql,Sql Server 2012,我有一些身份,不知道有多少。我必须只给一个条件。比如说 @isIncludeClose是参数 SELECT * FROM tbl WHERE status = CASE WHEN @isIncludeClose = 1 THEN <all_status> ELSE <status != 'CL'> END 从tbl中选择* 哪里 地位= @isIncludeClose=1时的情况 然后 其他的 结束 您必须检查参数是否可用(包含值)。如果不是(为空),则返回全部,否则返
SELECT * FROM tbl
WHERE
status =
CASE WHEN @isIncludeClose = 1
THEN <all_status>
ELSE <status != 'CL'>
END
从tbl中选择*
哪里
地位=
@isIncludeClose=1时的情况
然后
其他的
结束
您必须检查参数是否可用(包含值)。如果不是(为空),则返回全部,否则返回所选记录
以下是一个查询示例:
SELECT
*
FROM
tbl
WHERE
(@myParameter IS NULL OR myField = @myParameter)
AND (@otherParameter IS NULL OR otherField = @otherParameter)
如果@myParameter为NULL
,则每个记录的条件将求值为true,如果有值,则仅求值为true,其中目标字段包含指定的值(myField=@myParameter
)
以你的例子:
SELECT
*
FROM
tbl
WHERE
(@isIncludeClose != 1 OR status != 'CL')
使用T-SQL类似于:
IF @isIncludeClose = 1
BEGIN
--select all
END
ELSE
--specific !=
END
或者一个肮脏的黑客(假设你没有空值)
谢谢@Pred。它对我有用。
SELECT * FROM tbl
WHERE status !=
CASE WHEN @isIncludeClose != 1 THEN 'CL'
ELSE ''
END