2013-07-09 2 views
0

Java Derby DB를 사용하고 있습니다. 내가 쿼리 할 때 열 조건 값이 null이 아니면 지정된 데이터를 가져옵니다. 그렇지 않은 경우는, 그 열의 모든 데이터가 꺼내 져야한다. 내가 다음 1쿼리 열 = null 인 경우에만 모든 열 값을 쿼리하는 방법

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) 

가 어떻게 할 수있을 것입니다 결과 name_param는 '피터'는 통과하면

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

함수의 쿼리는

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

입니까?

+1

음, 나는 당신의 질문을 이해하지 못합니다. –

+0

그냥 where 절을 생략하면 뭐가 잘못 되었나요? – RiaD

+0

쿼리를 생략 할 수 없습니다. 내가 BIRT 엔진에 있기 때문에. 5 개 이상의 where 절이있는 영구 쿼리입니다. 그래서 매개 변수를 전달하지 않으면 조건이 null이됩니다. 내가 모든 값을 쿼리하려는 시간에 – 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 + "' 

다음 쿼리는

select * from EMP_TABLE where emp_name like 'Peter' 
때문에 1 될 것입니다 결과 '피터'로 전달 name_param하는 경우

W 암탉 name_paramnull 다음 그래서 쿼리는이 문제를 해결합니다 select * from EMP_TABLE where emp_name like '%'

희망이 name_param

%로 전달할 수 있습니다.

관련 문제