2013-04-23 107 views
0

我進入搜索引擎上的一些值篩選出的唱片GUI搜索查詢從數據庫

Name, Date, State 

如果用戶不輸入任何值,然後單擊「搜索」,他應該得到數據庫中的整個表。即不應用濾波器。

因此,例如,我寫了

Select Name, State, Date from Table where Name='' and State= '' and Date= '' 

但是,如果我在GUI中輸入任何值,沒有記錄從數據庫中取出。 但我希望這些充當過濾器而不是條件。 我正在使用DB2

請給我建議正確的方法。謝謝。

回答

0

下面的查詢將是這個目的正確,

Select Name, State, Date 
from Table 
where (:Name_Var is null OR Name = :Name_Var AND 
     (:State_Var is null OR State =:State_Var) AND 
     (:Date_Var is null OR Date = :Date_Var) 
0

試試這個

SELECT Name, State, Date 
FROM 
    Table 
WHERE 
    CASE WHEN ISNULL(@Name,0)=0 THEN 0 ELSE Name END = ISNULL(@Name,0) 
    AND 
    CASE WHEN ISNULL(@State,0)=0 THEN 0 ELSE State END = ISNULL(@State,0) 
    AND 
    CASE WHEN ISNULL(@Date,0)=0 THEN 0 ELSE Date END = ISNULL(@Date,0)