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