문제
다음 중 DECODE(COL1, NULL, 'NULL_VALUE', COL1)와 동일한 결과를 반환하는 것은?
① NVL(COL1, 'NULL_VALUE') ② CASE WHEN COL1 IS NULL THEN 'NULL_VALUE' ELSE COL1 END ③ COALESCE(COL1, 'NULL_VALUE') ④ 위의 모든 것이 다르다
정답
4번
해설
DECODE 함수는 등호(=) 비교를 사용하는데, NULL = NULL은 UNKNOWN이므로 매치되지 않아 COL1이 NULL일 때도 COL1(NULL)을 반환합니다. 반면 ① NVL은 NULL을 감지하면 'NULL_VALUE'를 반환하고, ② CASE WHEN IS NULL은 NULL을 올바르게 감지하여 'NULL_VALUE'를 반환하며, ③ COALESCE도 NULL을 감지하면 'NULL_VALUE'를 반환합니다. 따라서 DECODE의 특수한 NULL 처리 방식으로 인해 다른 함수들과는 다른 결과를 반환하므로, 위의 모든 것이 다릅니다.