SQL - 如果null / no输入,则忽略where子句

时间:2017-06-29 02:22:57

标签: sql sql-server-2008 ssrs-2008-r2

我正在构建SSRS报告,并希望我的一个参数在输入或不输入数据时是可选的。

以下是一个更好理解的示例查询:

SELECT
 C1
,C2
,C3
FROM
 db_Database..tb_Table
WHERE
 tb_Table_DateTime between [THEN] and [NOW]
 AND
 tb_Table_Integer IN (@Integer)

如果在我的查询中,我可以忽略整体:

AND tb_Table_Integer IN (@Integer)
如果用户选择不输入任何数字,则

行。

基本上,除非通过@integer指定,否则我希望返回所有数据。

如果在查询中不可能,可以在Visual Studio中实现吗?

干杯。

2 个答案:

答案 0 :(得分:3)

这通常通过以下方式处理:

WHERE . . . AND
      (@Integer IS NULL OR tb_Table_Integer = @Integer)

请勿使用IN (@Integer)。这有点暗示您认为@Integer可能是一个列表。这是不可能的。

答案 1 :(得分:0)

最常见的方法是使用coalesce或nullif。像这样:

WHERE coalesce(@integer,tb_Table_Integer) = tb_Table_Integer