2016-10-18 1 views
2

을하지 않고 case 문을 작성할 수 있습니다우리는 내가이 쿼리가 다른 문

select case when id=1 then 'A' 
when id=2 then 'B' 
end 
from test 

이건의
B에게 이드가

로/P O를
NULL 날을주고있다을
NULL
NULL

내 출력에 NULL 값을 갖고 싶지 않습니다. 단지 A와 B 만 비교하려고합니다. case 문에서 가능합니다.

+1

테스트 테이블은 5 개 행이 값. WHERE 조건을 지정하지 않으면 결과 집합은 항상 5 개의 행으로 구성됩니다. 따라서 WHERE 조건이 필요한 행 수를 제한해야하는 경우 그러나 그것은 CASE 절과 관련이 없습니다. (그 자체로) 결과 집합을 어떤 식 으로든 제한하지 않기 때문입니다. – Insac

답변

3

case 표현식은 표현식의 값만 조작 할 수 있으며 결과에서 행을 제거하지는 않습니다. 이 결과에서 null의를 생략하려는 경우, 당신은 where 절을 추가해야합니다 : ID = 1 일, ID = 2 일 다른와 다른 사람 :

SELECT CASE WHEN id = 1 THEN 'A' 
      WHEN id = 2 THEN 'B' 
     END 
FROM test 
WHERE id IN (1, 2) -- HERE 
1

WHERE 절을 사용하여 출력을 제한 할 수 있습니다.

SELECT CASE WHEN id=1 THEN 'A' 
WHEN id=2 THEN 'B' 
END 
FROM test 
WHERE id IN (1,2) 

아니면 CASE 문 내부 else 부분을 사용하는 대신 null의 다른 값을 보여 싶어합니다.

SELECT CASE WHEN id=1 THEN 'A' 
WHEN id=2 THEN 'B' ELSE 'Invalid' 
END 
FROM test