[英]Search records by date range & if date range is empty using SQL
我已经使用C#,asp.net创建了搜索网络表单。 我有搜索参数,例如客户名称,日期范围(从&到)。 我已经写了查询以通过上述参数进行搜索。 它的工作正常,但是当我仅按客户名称而不按日期范围进行搜索时,则不会显示记录。 请给我解决方案,以与“% ”条件中的“%”运算符相同的空白日期范围给出条件。
假设您要将以下3个参数传递给SP
@Input VARCHAR(100)
@FromDate DATETIME
@ToDate DATETIME
在这种情况下,当您只想根据客户名称进行搜索时,请为FromDate和ToDate传递NULL值,然后按如下所示编写查询。
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 :UI中未指定FromDate,因此@FromDate将为NULL ,条件AND (T1.FROMDATE >= @FromDate OR **@FromDate IS NULL**)
将返回true。
情况2 :UI中未指定ToDate,因此@ToDate将为NULL ,条件ND (T1.TODATE <= @ToDate OR @ToDate IS NULL)
将返回true。
情况3:在这种情况下未指定从日期和到日期,以上条件(情况1和情况2)均成立,查询将基于T1.Name LIKE '%' + @Input + '%'
返回所有匹配的记录。 T1.Name LIKE '%' + @Input + '%'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.