2013-04-23 104 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)