더북(TheBook)

두 번째 형태는 CASE WHEN 다음에 조건식이 오며 조건1이 참이면 result1을, 조건2가 참이면 result2를 반환합니다. 이런 식으로 WHEN 절을 추가해 계속해서 조건을 확인할 수 있습니다. 그 어떤 조건도 만족하지 않으면 ELSE 다음에 있는 result 값을 반환합니다.

두 가지 형태의 CASE 연산자에서 ELSE 절은 생략할 수 있습니다. 만약 모든 조건에 맞지 않고 ELSE 절도 없다면 CASE 연산자는 NULL을 반환합니다.

예제를 실행해 작동 방식을 확인해 봅시다.

코드 6-42

SELECT CASE 1 WHEN 0 THEN 'A'
              WHEN 1 THEN 'B'
       END CASE1,
       CASE 9 WHEN 0 THEN 'A'
              WHEN 1 THEN 'B'
              ELSE 'None'
       END CASE2,
       CASE WHEN 25 BETWEEN 1 AND 19 THEN '10대'
            WHEN 25 BETWEEN 20 AND 29 THEN '20대'
            WHEN 25 BETWEEN 30 AND 39 THEN '30대'
            ELSE '30대 이상'
       END CASE3;

실행결과

첫 번째 CASE 연산자에서는 CASE 다음에 오는 1이 0과 같으면 A, 1과 같으면 B를 반환합니다. 여기서는 B를 반환하겠죠? 두 번째 CASE 연산자는 9를 두 개의 WHEN 절과 비교하는데, 이 중 어느 값과도 같지 않으므로 ELSE 절의 None을 반환했습니다. 두 CASE 연산자는 첫 번째 형태에 속합니다.

마지막 CASE 연산자는 두 번째 형태에 속하는데, 먼저 첫 번째 WHEN 절에서 BETWEEN... AND 연산자를 사용해 25가 1과 19 사이에 있는지 확인합니다. 당연히 이 조건은 거짓이 되고 결국 두 번째 WHEN 절에서 25가 20과 29 사이에 있는 조건이 참이 되어 20대를 반환했습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.