sql - 多个日期过滤器的搜索查询

标签 sql sql-server sql-server-2008 t-sql coalesce

我需要为我的搜索页面编写一个查询。 我的过滤器如下所示:

@StartDateForColumn1 datetime,
@FinishDateForColumn1 datetime,
@StartDateForColumn2 datetime,
@FinishDateForColumn2 datetime,

它们都可以为空。如果是这样,我需要所有数据:

select * from Table1

例如:如果用户仅填写@FinishDateForColumn1,则查询将为:

select * from Table1 where Column1<@FinishDateForColumn1 

所以我不想为所有条件编写if-else。是否有其他最短的方法来为此示例编写查询?也许我需要使用合并,但我不知道如何在此查询中使用它。

最佳答案

您可以按以下方式使用coalesceisnull

select * 
from Table1 
where Column1<= isnull(@FinishDateForColumn1, Column1)

注意。这确实假设您的 column1 数据不包含空值。

关于sql - 多个日期过滤器的搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17947676/

相关文章:

java - 无法将 BOOLEAN 列添加到我的 Derby 数据库中的表中

java - IN 子句中的 Hibernate 标准 DB2 复合键

sql - mysql 连接两个表

sql-server - 如何使用换行符或段落将文本存储在数据库中

与 "Ranks"的 SQL 联合

mysql - SQL 查询 - 显示所有可用和不可用的 ChairNo

sql - 具有非常大列表的 IN 运算符在 SQL Server 中速度太慢。我应该用什么代替?

c# - 使用 C# 将时间数据插入 SQL Server

sql-server-2008 - VBA ADO 'Invalid Object Name' 错误;没有错误 SQL Server Management Studio

sql - 将节点插入到 SQL 2008 xml 数据类型中...首先检查它是否存在