2011-12-05 3 views
3

내 코드에 어떤 문제가 있습니까?SQL 쿼리 오류 "키워드 'IS'근처의 구문이 잘못되었습니다."

TBL 테이블에서 비활성 또는 활성 행을 검색하기 위해 BIT를 전달하려고합니다.

이 오류를 키워드 '는'근처

잘못된 구문이다.

여기 코드

CREATE function [CM].[fnSearch] 
(
@Status bit 
) 
RETURNS Table 
as 
RETURN 
(
    SELECT * 
    FrOM TBL 
    WHERE CASE @Status 
       WHEN '0' THEN (DeletedBy IS NULL) 
       ELSE (DeletedBy IS NOT NULL) 
      END 
) 

UPDATE :..

(SELECT 내 입력 오류 전에 그것에 대해 죄송합니다

+1

결코 닫히지 않는 선택 앞에 괄호가 있습니다. –

+0

죄송합니다. 입력 중 오류가 발생했습니다. – kevin

답변

5

나는이 권리를 읽고 있어요 경우, 당신은 비트 값 (1 또는 0)으로 평가되는 부울 표현식으로 (DeletedBy IS [NOT] NULL)을 사용하려고합니까? 그렇다면 그렇게 할 수 없습니다. 대신이 같은 ething :

CASE WHEN (@Status = 0 AND DeletedBy IS NULL) OR DeletedBy IS NOT NULL THEN 1 ELSE 0 END 
2

SQL이 1 또는 0에 부울 식을 평가하지 않습니다. true 일 때 명시 적으로 1로 설정하고 false 일 때는 0으로 설정해야합니다.

관련 문제