문제
다음 중 COL1이 NULL일 때 'EMPTY', NULL이 아닐 때 'NOT NULL'을 반환하는 SQL로 가장 적절한 것은?
① SELECT NVL(COL1, 'EMPTY') FROM TAB; ② SELECT NVL2(COL1, 'NOT NULL', 'EMPTY') FROM TAB; ③ SELECT COALESCE(COL1, 'EMPTY') FROM TAB; ④ SELECT CASE WHEN COL1 IS NULL THEN 'EMPTY' ELSE COL1 END FROM TAB;
정답
2번
해설
NVL2(expr1, expr2, expr3)는 expr1이 NULL이 아니면 expr2를, NULL이면 expr3를 반환합니다. 따라서 COL1이 NULL이 아니면 'NOT NULL', NULL이면 'EMPTY'를 반환하여 조건에 정확히 부합합니다. ①NVL: COL1이 NULL일 때 'EMPTY'를 반환하지만, NULL이 아닐 때는 COL1의 원래 값을 반환하므로 'NOT NULL'이 아닙니다. ③COALESCE: COL1이 NULL일 때 'EMPTY'를 반환하지만, NULL이 아닐 때는 COL1의 원래 값을 반환하므로 'NOT NULL'이 아닙니다. ④CASE문: COL1이 NULL이 아닐 때 COL1의 원래 값을 반환하므로 'NOT NULL'이 아닙니다.