본문 바로가기
SQL 문제 풀기/2. SQLD 기출 : 2024.3.01~2024.4.25

<SQLD 9> 문자함수와 날자 함수에 대한 기출문제

by HYEHYE_SON 2024. 3. 9.
728x90

매일 SQLD 기출 문제 풀기 챌린지


 


문제9.

다음 중 결과값이 다른 것은?

 
① SELECT SUBSTR(TO_CHAR('20190504'),5,2) FROM DUAL;
② SELECT EXTRACT(MONTH FROM DATE '2020-05-01') FROM DUAL;
③ SELECT CONCAT('0', '5') FROM DUAL;
④ SELECT TRIM('05') FROM DUAL;


해설해보기

#1번
TO_CHAR()를 사용해서
숫자형의 20190504 를 문자형 '20190504'로 변경후

특정 문자를 추출하는 함수인 SUBSTR()를 사용하여
20190504에서 5번째 자리에 위치한 0부터 2개를 추출하여 '05'가 추출됨

#2번
EXTRACT([날짜 시간 등 보고싶은 것] FROM [입력날짜or컬럼명]) 함수 = EXTRACT FUNCTION

- YEAR, MONTH, DAT, HOUR, MINUTE, TIMESTAMP 등 날짜 및 시간과 같은 특정 값을 추출하는 함수
- 컬럼명에 들어갈 컬럼은 datatype이 FROM 앞에 들어가는 type과 일치해야함
- datatime 또는 interval 표현식에서 사용

따라서
EXTRACT( MONTH FROM DATE '2020-05-01')
DATE '2020-05-01'에서 MONTH를 추출하겠다는 것! 
주의할 점은 05가 출력되는 것이 아님!
'5'가 출력됨

#3번
문자열을 합치는 함수 CONCAT() 을 통해
CONCAT('0', '5') 0과 5를 합쳐 
'05'가 출력됨

#4번
양쪽의 공백을 자르는 TRIM()함수를 사용
TRIM('05')에는 공백이 없기 때문에
'05'가 그대로 출력됨


따라서 정답은

② 


직접 실행해보기

#1번

select substr(to_char('20190504'), 5, 2)
	from dual;

 

#2번

select extract(month from date '2020-05-01')
	from dual;

 

#3번

select concat('0', '5')
	from dual;

 

#4번

select trim('05')
	from dual;

 

 

반응형