SQLDSQL 기본함수난이도 2MCQ

SQLD 함수 기출문제 #641

문제

다음 SQL의 결과는? (Oracle)

SQL
WITH test AS ( SELECT 'A' col1, TO_DATE('2023-02-28', 'YYYY-MM-DD') dt FROM DUAL UNION ALL SELECT 'B', TO_DATE('2023-02-29', 'YYYY-MM-DD') FROM DUAL ) SELECT col1, CASE WHEN dt IS NULL THEN 'INVALID' ELSE TO_CHAR(ADD_MONTHS(dt, 12), 'YYYY-MM-DD') END result FROM test;

① A: 2024-02-28, B: 2024-02-29 ② A: 2024-02-28, B: INVALID ③ A: 2024-03-01, B: INVALID ④ 오류 발생

정답

4

해설

2023년은 평년이므로 2월 29일이 존재하지 않음. Oracle에서 TO_DATE('2023-02-29', 'YYYY-MM-DD')는 NULL을 반환하는 것이 아니라 'ORA-01839: date not valid for month specified' 오류를 발생시킴. 따라서 WITH 절에서 UNION ALL을 실행하는 과정에서 오류가 발생하여 전체 쿼리가 실패함. ①②③은 모두 쿼리가 정상 실행된다고 가정한 잘못된 선택지임.

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[SQLD] 함수 SQL 기본 기출 #641 | sqldpass