문제
다음 두 SQL이 동일한 결과를 반환하는 것은?
SQLSELECT CASE WHEN AMOUNT = 0 THEN NULL ELSE AMOUNT END FROM ORDERS;
① NVL(AMOUNT, 0) ② NVL2(AMOUNT, 0, NULL) ③ NULLIF(AMOUNT, 0) ④ COALESCE(AMOUNT, 0)
정답
3번
해설
NULLIF(A, B)는 A와 B가 같으면 NULL을 반환하고, 다르면 A를 반환합니다. CASE문도 AMOUNT=0이면 NULL, 아니면 AMOUNT를 반환하므로 동일한 로직입니다. ① NVL은 NULL을 0으로 변환, ② NVL2는 NULL이 아니면 0 반환, ④ COALESCE는 NULL을 0으로 대체합니다.