2013-07-09 58 views
0

我正在使用Java Derby DB。當我查詢時,如果列條件值不爲空,則獲取指定的數據。否則爲空,那麼該列的所有數據都應該獲取。如何查詢所有列值,僅當查詢列=空時

example (EMP_TABLE) 
emp_id emp_name 
1  Arun 
2  Peter 
3  Manoj 

在功能查詢是

select * from EMP_TABLE where emp_name = '" + name_param + "' 

當我通過name_param是 '彼得',那麼結果將是1

When i pass name_param is null then emp_name where clause 
should be omitted. 
(So query is "select * from EMP_TABLE" if emp_name is null) 

該怎麼辦?

+1

呃,我不明白你的問題 - –

+0

只是忽略where子句有什麼問題? – RiaD

+0

我不能省略查詢。因爲我在BIRT引擎中擁有它​​。它是永久查詢與超過5 where子句。所以當我沒有傳遞參數時,它的條件將是空的。當時我想要查詢所有的值 – Manoj

回答

0

您正在混淆數據庫中的列與用於參數化查詢的變量。我想你想要的東西是這樣的:

select * 
from Emp_Table et 
where ($EmpName is null or $EmpName = emp_name); 

你不能改變emp_name is null如何工作。

0

一個通用的解決方案是

declare @emp_name varchar(100) 
set @emp_name='Peter' 
select * from EMP_TABLE where (emp_name = @emp_name or @emp_name is null) 
1

可以使用like代替=

select * from EMP_TABLE where emp_name **like** '" + name_param + "' 

如果name_param爲 '彼得',那麼結果將是1 因爲查詢是

select * from EMP_TABLE where emp_name like 'Peter' 
通過

W母雞name_paramnull再經過name_param作爲%

所以查詢select * from EMP_TABLE where emp_name like '%'

希望這將解決您的問題。