在一个表中,有Proc_OrderDate 和Proc_Date两个字段,sql="Select * FROM Proc WHERE CONVERT(varchar(100), Proc_DATE, 23)='" & Format(Date, "yyyy-mm-dd") & "' OR CONVERT(varchar(100), Proc_OrderDATE, 23)='" & Format(Date, "yyyy-mm-dd") & "' AND CONVERT(varchar(100), Proc_DATE, 23)> CONVERT(varchar(100), Proc_OrderDATE, 23)"但是这里面有个问题,我不知道在这里怎么解决,就是如果其中一个为空的话就不对了.我想要如下解果,就是选择这两个字段为条件,列取条件等于这个两字段的记录,但是还要对比这两个字段,如果Date和OrderDate的其中一项为空一项不为空的话那么列取各自条件想等的值,如果两项都不为空,则列取等于Date字段的值.应该怎么做.

解决方案 »

  1.   

    如果Date和OrderDate的其中一项为空一项不为空的话那么列取各自条件想等的值,如果两项都不为空,则列取等于Date字段的值?where (Date is null and ....) or
          (OrderDate is null and ...) or
          (Date is not null and OrderDate is not null and date = ...)   
      

  2.   

    如:isnull(Date,'1900-01-01')--為空格應該是null空值
      

  3.   


    sql="Select * FROM Proc WHERE CONVERT(varchar(100), Proc_DATE, 23)='" & Format(Date, "yyyy-mm-dd") & "' OR CONVERT(varchar(100), Proc_OrderDATE, 23)='" & Format(Date, "yyyy-mm-dd") & "' AND CONVERT(varchar(100), isnull(Proc_DATE,'1900-01-01'), 23)> CONVERT(varchar(100), isnull(Proc_OrderDATE,'1900-01-01'), 23)"