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 是 '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)

怎么办?

4

3 回答 3

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 通过nullname_param%

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

希望这能解决您的问题。

于 2013-07-10T10:54:50.460 回答
0

一个通用的解决方案是

declare @emp_name varchar(100)
set @emp_name='Peter'
select * from EMP_TABLE where (emp_name = @emp_name or @emp_name is null)
于 2013-07-09T13:45:12.543 回答
0

您将数据库中的列与用于参数化查询的变量混淆了。我想你想要这样的东西:

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

你无法改变emp_name is null工作方式。

于 2013-07-09T13:43:30.277 回答