按日期范围搜索记录&如果使用SQL将日期范围设置为空

时间:2014-02-19 05:30:35

标签: c# asp.net sql

我使用C#,asp.net创建了搜索网页表单。我有搜索参数,如客户名称,日期范围(从&到;)。我已经通过上面的参数编写了搜索查询。它的工作正常,但是当我只按客户名称而不是按日期范围搜索时,它不会显示记录。请给我解决方案,在'LIKE'条件下为'%'运营商提供与空日期范围相同的条件。

1 个答案:

答案 0 :(得分:0)

假设您将以下3个参数传递给SP

@Input VARCHAR(100)
@FromDate DATETIME
@ToDate DATETIME

如果您只想根据客户名称进行搜索,请在此情况下为 FromDate 传递 NULL 值strong>和 ToDate 并写下您的查询,如下所示。

SELECT COL1,COL2,COL3....  
FROM TABLET1 T1
WHERE T1.Name LIKE '%' + @Input  + '%'
AND (T1.FROMDATE >= @FromDate OR @FromDate IS NULL)
AND (T1.TODATE <= @ToDate OR @ToDate IS NULL)

案例1 :未在用户界面中指定FromDate,因此 @FromDate NULL ,条件AND (T1.FROMDATE >= @FromDate OR **@FromDate IS NULL**)将返回true

案例2 :未在用户界面中指定ToDate,因此 @ToDate NULL 且条件ND (T1.TODATE <= @ToDate OR @ToDate IS NULL)将返回true

案例3:在这种情况下,从日期和日期都没有指定上述条件(案例1和案例2)都将为真,查询将返回所有匹配的记录T1.Name LIKE '%' + @Input + '%'