[SQL] 08. (4) 단일행 형변환 함수
(1) 형변환 함수
(1) 묵시적 형변환과 명시적 형변환
① 묵시적 형변환 : 오라클이 자동으로 하는 형변환 (숫자처럼 생긴 문자만 변환해줌)
② 명시적 형변환 : 사람이 수동적으로 지정하는 형변환
SELECT 2 + '2' FROM dual;
2+'2'
----------
4
// 숫자 + '문자' : 묵시적 형변환의 예시
SELECT 2 + TO_NUMBER('2') FROM dual;
select 2 + 'A' FROM dual;
-----------------------------------
select 2 + 'A' FROM dual
*
ERROR at line 1:
ORA-01722: invalid number
(2) TO_CHAR(날짜 → 문자로 형 변환하기)
TO_CHAR(원래 날짜, '원하는 모양')
1) 연도
() 연도
① YYYY : 연도를 4자리로 표현
② RRRR : 2000년 이후에 Y2K버그로 인해 등장한 날짜 표기법으로 연도 4자리 표기법
③ YY : 연도의 끝의 2자리만 표시
④ RR : 연도를 마지막 2자리만 표시
⑤ YEAR : 연도의 영문 이름 전체를 표시함
SELECT SYSDATE, TO_CHAR(SYSDATE, 'YYYY') "YYYY",
TO_CHAR(SYSDATE, 'RRRR') "RRRR",
TO_CHAR(SYSDATE, 'YY') "YY",
TO_CHAR(SYSDATE, 'RR') "RR",
TO_CHAR(SYSDATE, 'YEAR') "YEAR"
FROM dual;
SYSDATE YYYY RRRR YY RR YEAR
------------------- ---- ---- -- -- ------------------------------------------
2021-11-21:09:51:42 2021 2021 21 21 TWENTY TWENTY-ONE
2) 월
() 월
① MM : 월을 숫자 2자리로 표현함
② MON : 유닉스용 오라클에서 월을 뜻하는 영어 3글자로 표기 (윈도우는 MONTH와 동일)
③ MONTH : 월을 뜻하는 이름 전체를 표시
SELECT SYSDATE, TO_CHAR(SYSDATE, 'MM') "MM",
TO_CHAR(SYSDATE, 'MON') "MON",
TO_CHAR(SYSDATE, 'MONTH') "MONTH"
FROM dual;
SYSDATE MM MON MONTH
------------------- -- -------- --------
2021-11-21:09:57:56 11 11월 11월
3) 일
() 일
① DD : 일을 숫자 2자리로 표시
② DAY : 요일에 해당하는 명칭을 표시 (윈도우용 오라클 -한글)
③ DDTH : 몇 번째 날인지를 표시
SELECT SYSDATE, TO_CHAR(SYSDATE, 'DD') "DD",
TO_CHAR(SYSDATE, 'DAY') "DAY",
TO_CHAR(SYSDATE, 'DDTH') "DDTH"
FROM dual;
SYSDATE DD DAY DDTH
------------------- -- ------------ ----
2021-11-21:10:00:12 21 일요일 21ST
4) 시간
() 시간
① HH24 : 하루를 24시간으로 표시
② HH : 하루를 12시간 으로 표시
③ 분 : MI로 표시
④ 초 : SS로 표시
SELECT SYSDATE, TO_CHAR(SYSDATE, 'RRRR-MM-DD : HH24:MI:SS')
FROM dual;
SYSDATE TO_CHAR(SYSDATE,'RRRR
------------------- ---------------------
2021-11-21:10:04:11 2021-11-21 : 10:04:11
(3) TO_CHAR(숫자형 → 문자로 형 변환하기)
종류 | 의미 | 예시 | 결과 |
9 | 9의 개수만큼 자릿수 | TO_CHAR(1234 , '99999') | 1234 |
0 | 빈자리를 0으로 채움 | TO_CHAR(1234 , '099999') | 001234 |
$ | $ 표시를 붙여서 표시 | TO_CHAR(1234 ,'$9999' ) | $1234 |
. | 소수점 이하를 표시 | TO_CHAR(1234 , '9999.99') | 1234.00 |
, | 천 단위 구분 기호를 표시 | TO_CHAR(1234 , '99,999') | 12,345 |
(4) TO_NUMBER
① 숫자 처럼 생긴 문자를 숫자로 바꾸어 주는 함수
TO_NUMBER('숫자');
SELECT TO_NUMBER('5') FROM dual;
TO_NUMBER('5')
--------------
5
SELECT TO_NUMBER('A') FROM dual;
SELECT TO_NUMBER('A') FROM dual
*
ERROR at line 1:
ORA-01722: invalid number
SELECT ASCII('A') FROM dual;
ASCII('A')
----------
65
(4) TO_DATE(함수)
① 날짜처럼 생긴 문자를 날짜로 바꿔주는 함수
TO_DATE('문자')
SELECT TO_DATE('21/12/16') FROM dual;
TO_DATE('21/12/16')
-------------------
0021-12-16:00:00:00
SELECT TO_DATE('2021/12/16') FROM dual;
TO_DATE('2021/12/16
-------------------
2021-12-16:00:00:00
