문제
아래 SQL에 대한 결과 설명으로 가장 적절한 것은?
SQLSELECT COALESCE(A, 50 * B, '50') AS RESULT FROM T;
① B가 NULL이 아니면 항상 B 값을 반환한다. ② A와 B가 NULL일 경우 100을 반환한다. ③ A가 NULL일 경우에는 언제나 50 * B를 반환한다. ④ A가 NULL이 아닐 경우 A 값을 반환한다.
정답
4번
해설
정답: 4. COALESCE는 왼쪽부터 검사하여 첫 번째 NULL이 아닌 값을 반환하므로 A가 NULL이 아니면 A를 반환한다.
오답 풀이
- 1번: A가 NULL이 아니면 B와 무관하게 A를 반환한다.
- 2번: A와 B가 NULL이면 세 번째 인자인 '50'이 반환될 수 있다.
- 3번: B가 NULL이면 50 * B도 NULL이므로 세 번째 인자로 넘어갈 수 있다.
- 4번: COALESCE의 규칙에 맞다.
보충 개념 COALESCE(expr1, expr2, ...)는 첫 번째 NULL이 아닌 표현식을 반환한다. 인자 간 데이터 타입 호환성도 고려해야 한다.