我需要为我的搜索页面编写一个查询。 我的过滤器如下所示:
@StartDateForColumn1 datetime,
@FinishDateForColumn1 datetime,
@StartDateForColumn2 datetime,
@FinishDateForColumn2 datetime,
它们都可以为空。如果是这样,我需要所有数据:
select * from Table1
例如:如果用户仅填写@FinishDateForColumn1
,则查询将为:
select * from Table1 where Column1<@FinishDateForColumn1
所以我不想为所有条件编写if-else。是否有其他最短的方法来为此示例编写查询?也许我需要使用合并,但我不知道如何在此查询中使用它。
最佳答案
您可以按以下方式使用coalesce
或isnull
select *
from Table1
where Column1<= isnull(@FinishDateForColumn1, Column1)
注意。这确实假设您的 column1 数据不包含空值。
关于sql - 多个日期过滤器的搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17947676/