我有一些地位',不知道有多少。我必须只为一个条件。例如
@isIncludeClose是参数。
SELECT * FROM tbl
WHERE
status =
CASE WHEN @isIncludeClose = 1
THEN <all_status>
ELSE <status != 'CL'>
END
答案 0 :(得分:2)
您必须检查参数是否可用(包含值)。如果不是(IS NULL),则返回all,否则返回所选记录。
以下是一个示例查询:
SELECT
*
FROM
tbl
WHERE
(@myParameter IS NULL OR myField = @myParameter)
AND (@otherParameter IS NULL OR otherField = @otherParameter)
如果@myParameter IS NULL
,那么每条记录的条件都会变为true,如果它有一个值,它只会变为true,其中目标字段包含指定的值(myField = @myParameter
)
用你的例子:
SELECT
*
FROM
tbl
WHERE
(@isIncludeClose != 1 OR status != 'CL')
答案 1 :(得分:0)
使用T-SQL,如:
IF @isIncludeClose = 1
BEGIN
--select all
END
ELSE
--specific !=
END
或一个肮脏的黑客(假设你没有空值)
SELECT * FROM tbl
WHERE status !=
CASE WHEN @isIncludeClose != 1 THEN 'CL'
ELSE ''
END