我正在使用Java Derby DB。当我查询时,如果列条件值不为null,则获取指定的数据。否则为null,那么该列的所有数据都应该被提取。
example (EMP_TABLE)
emp_id emp_name
1 Arun
2 Peter
3 Manoj
函数中的查询是
select * from EMP_TABLE where emp_name = '" + name_param + "'
当我传递name_param是'Peter'时,结果将是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)
怎么办?
答案 0 :(得分:1)
您可以使用like
代替=
select * from EMP_TABLE where emp_name **like** '" + name_param + "'
如果name_param
作为'Peter'传递,那么结果将为1
因为查询是
select * from EMP_TABLE where emp_name like 'Peter'
当name_param
为null
时,将name_param
作为%
传递
所以查询是select * from EMP_TABLE where emp_name like '%'
希望这能解决您的问题。
答案 1 :(得分:0)
您将数据库中的列与用于参数化查询的变量混淆。我想你想要的东西:
select *
from Emp_Table et
where ($EmpName is null or $EmpName = emp_name);
您无法更改emp_name is null
的工作方式。
答案 2 :(得分:0)
通用解决方案
declare @emp_name varchar(100)
set @emp_name='Peter'
select * from EMP_TABLE where (emp_name = @emp_name or @emp_name is null)