SQL - 如果为空/无输入则忽略 where 子句

SQL - ignore where clause if null / no input

我正在构建一个 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中实现?

干杯。

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

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

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

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

WHERE coalesce(@integer,tb_Table_Integer) = tb_Table_Integer