2013-02-20 4 views
0

NULL이거나 아닐 수도있는 몇 가지 매개 변수를 사용하는 저장 프로 시저가 있습니다.ISNULL 또는 "LIKE"사용

매개 변수 값이 명확한 경우 ISNULL 옵션을 사용할 수 있지만 null 대신 "LIKE"를 사용하려면 어떻게해야할지 모르겠다. 아래를 참조

@org_id as int, 
@deleted as bit = NULL, 
@firstname as char = NULL, 
@lastname as char = NULL 

Select 문은 다음과 같습니다 :

매개 변수는

select user_id, firstname,lastname,firstname +' ' + lastname as fullname, email, phone,  is_tech, is_admin,is_cust 
from users 
where [email protected]_id and is_tech=1 and delete_flag=ISNULL(@deleted,delete_flag) 
order by lastname,firstname asc 

이름 및 성 PARAMS가 null가 아닌 경우, 대신 문자 예를 들어, "J"이며, 어떻게 나는 delete_flag 절과 비슷한 것을 씁니다. 그리고 firstname은 'J %'와 비슷하지만 null을 사용하지 않는다면?

아이디어가 있으십니까?

답변

4

이를 사용할 수 있습니다

WHERE field LIKE @param OR @param IS NULL 
+0

당신이 위의 단지 것보다 더 많은이 때 두 부분 주위에 괄호를 넣어 있는지 확인하십시오. –

+0

흠 ... 역시 팸알과 같이 작동하지 않는 것 같습니다. users.org_id = 'at'org_id 및 is_tech = 1 및 delete_flag = ISNULL ('at'deleted, delete_flag) 및 (firstname LIKE 'at'firstname or 'at'firstname이 null 인 경우) .... 나는 SP를 실행하고 작동하는 org_id 만 전달하지만, 예를 들어 통과하면 "D"는 아무 것도 표시되지 않고 "D"로 시작하는 이름을 가진 사용자가 있다는 것을 알고 있습니다. – thegunner

+0

@thegunner 작동하지 않는 것은 무엇입니까? 가능하면 http://sqlfiddle.com에서 테스트 데이터로 쿼리를 표시하십시오. –