如果查询列= null,如何查询所有列值

时间:2013-07-09 13:41:40

标签: mysql sql derby

我正在使用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)

怎么办?

3 个答案:

答案 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_paramnull时,将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)