SQL - 如果Param Null则省略WHERE子句中的条件

时间:2016-10-28 21:32:10

标签: sql null where param

@TimeCurr Char(1)

SELECT RecordDate, a, b,c
FROM tbl_xyz
WHERE 1 = 1
AND

如果@TimeCurr ='Y'那么 RecordDate = GetDate()

如果@TimeCurr ='N'则 RecordDate< = GetDate()

如果@TimeCurr = Null 然后完全省略critera。我们怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

这样的事情:

SELECT RecordDate, a, b,c
FROM tbl_xyz
WHERE 1 = 1 AND
      ((@TimeCurr = 'Y' AND RecordDate = CAST(GetDate() as date)) OR
       (@TimeCurr = 'N' AND RecordDate <= GetDate()) OR
       @TimeCurr IS NULL
      );

基于GETDATE()的使用,我猜你正在使用SQL Server。如果是,则函数GETDATE()返回日期/时间值。您通常不想使用=。这就是为什么我将它转换为日期,假设RecordDate实际上是一个没有时间组件的日期。