2016-02-27 26 views
0

我有一個具有下列數據的表:Null值

ITEM LOCATION RECEIVE_DATE 
001  13001  27-JAN-2016 
002  14001  null 

我使用下面的檢索結果中的兩個參數:

select * from item_master 
where 
(TRUNC (RECEIVE_DATE) between NVL(:STARTDATE, TRUNC(RECEIVE_DATE)) and NVL(:enddate, trunc(RECEIVE_DATE))); 

如果我輸入兩個日期參數爲空,我只得到具有RECEIVE_DATE的記錄並排除所有記錄爲空RECEIVE_DATE

如果我不爲參數輸入任何值,應該如何檢索所有行?

回答

2

您可以添加ORIS NULL

select * 
from item_master 
where 
    (TRUNC(RECEIVE_DATE) 
    between NVL(:STARTDATE, TRUNC(RECEIVE_DATE)) and NVL(:enddate, trunc(RECEIVE_DATE))) 
    OR (:STARTDATE IS NULL AND :enddate IS NULL);