搜索查询以从数据库中筛选出记录

时间:2013-04-23 09:45:59

标签: sql db2 fusion

我在 GUI

上的搜索引擎上输入了一些值
Name, Date, State

如果用户没有输入任何值,并点击“搜索”,他应该从数据库中获取整个表格。即没有应用过滤器。

所以例如我写了

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

但是如果我在GUI中没有输入任何值,则不会从DB中获取任何记录。 但我希望这些作为过滤器而不是条件。 我正在使用DB2

请建议我正确的方法。谢谢。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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)