문제
다음 중 결과가 다른 것은?
① CASE 칼럼 WHEN NULL THEN -1 ELSE 0 END ② CASE WHEN 칼럼 IS NULL THEN -1 ELSE 0 END ③ DECODE(칼럼, NULL, -1, 0) ④ NVL(칼럼, -1)
정답
1번
해설
정답: 1. CASE 칼럼 WHEN NULL은 = NULL 비교와 유사하게 동작하므로 NULL을 정상적으로 판별하지 못한다.
오답 풀이
- 1번: NULL 비교를 WHEN NULL 형태로 처리하면 원하는 NULL 판별이 되지 않아 결과가 다르다.
- 2번: IS NULL을 사용하므로 NULL이면 -1을 반환한다.
- 3번: Oracle의 DECODE는 NULL 비교를 같은 값으로 처리할 수 있어 NULL이면 -1을 반환한다.
- 4번: NVL(칼럼, -1)은 칼럼이 NULL이면 -1을 반환한다.
보충 개념 SQL에서 NULL은 = 연산자로 비교할 수 없고 IS NULL을 사용해야 한다. Oracle DECODE는 일반 비교와 달리 NULL을 같은 값으로 취급하는 특성이 있다.