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
我正在构建一个 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