2016-11-15 11 views
0

아래 표시된 저장 프로 시저에서 'Text'및 'MenuType'열 검색을 기반으로 모든 메뉴를 제공합니다.Sql Server에서 null 값을 처리하는 방법

매개 변수로 GetMenusbyTextandType '', '- 1'을 전달하면 MenuMaster 테이블의 모든 레코드가 표시되어야하는 것처럼 만들고 싶습니다. 문제는이 Proc에 반영되지 않은 'MenuType'열에 null 값이 있다는 것입니다.

Create proc GetMenusbyTextandType 
    @Text nvarchar(400), 
    @MenuType nvarchar(10) 
as 
begin 
    SELECT * 
    FROM MenuMaster 
    WHERE Active = 1 
     AND [Text] LIKE '%' + @Text + '%' 
     AND MenuType LIKE 
      CASE 
       WHEN @MenuType = '-1' 
        THEN '%' + ISNULL(MenuType, '') + '%' 
        ELSE '%' + @MenuType + '%' 
      END 
END 

enter image description here

+1

코드에서 보는 것처럼 SQL Server를 추측하고 있지만 사람이 이처럼 물건을 추측해서는 안됩니다. relevan't rdbms 태그와 테이블 구조를 포함하도록 질문을 편집하십시오. –

+0

예, 해당 SQL 서버 –

+0

및 테이블? DDL 테이블과 DML –

답변

2

당신은 당신의 SQL을 지나치게 복잡하게된다. 간단한 솔루션이 있습니다 :

SELECT * 
FROM MenuMaster 
WHERE Active = 1 
    AND [Text] LIKE '%' + @Text + '%' 
    AND (
     @MenuType = '-1' 
     OR MenuType LIKE '%' + @MenuType + '%' 
) 
+0

덕분에 샘플 데이터를 추가하십시오. –

+0

도움을 주시면 다행입니다. :-) –