2013-08-28 2 views
0

내 선택 항목에 null 응답 가능성을 통합하려고하는 SQL 쿼리가 있습니다.SQL null 값에 대해 Where 절의 사례 사용

궁극적으로 이것은 SSRS 보고서로 끝납니다.

이 쿼리는 정상적으로 작동하지만 p.ReferralReason의 null 값은 항상 반환됩니다. @Reason의 값이 아무것도하지만, '%'이면 내가 널이 반환되지 싶습니다 :

 DECLARE @Reason varchar(100) 
    SET @Reason = 'Lost To Care' 


    SELECT p.Person_ID, P.Person_Name, p.ReferralReason 
    FROM VIEW_Patient p 
    WHERE 
     p.ReferralReason like '%' + @Reason + '%' 

내가 @Reason은 '%'로 설정되어 있으면 @Reason = '%' 모든 이유를 통합하고자하는이, null 값을 포함하고 싶습니다만, @Reason이 다른 값으로 설정된 경우 null 값을 포함하고 싶지 않습니다.

이 내가 시도 것입니다,하지만 작동하지 않습니다

 DECLARE @Reason varchar(100) 
    SET @Reason = '%' 


    SELECT p.Person_ID, P.Person_Name, p.ReferralReason 
    FROM VIEW_Patient p 
    WHERE 
     case 
      when @Reason = '%' then (p.ReferralReason like '%' + @Reason + '%' or p.ReferralReason is null) 
      else p.ReferralReason like '%' + @Reason + '%' 
     end 

MS SQL 서버 2008 R2. NULL 값이 빈 문자열로 대체하는 경우

답변

1

그들은 %

SELECT p.Person_ID, 
     P.Person_Name, 
     p.ReferralReason 
FROM VIEW_Patient p 
WHERE ISNULL(p.ReferralReason, '') LIKE '%' + @Reason + '%' 
에 둘러싸여 전체의 % 아니라 다른 문자열로 구성된 패턴과 일치하는 것