< 형변환 함수 >

1. TO_ CHAR : 숫자 , 날짜 타입의 값을 문자타입으로 형변환 시켜주는 함수 

TO_CHAR(숫자|날짜, [포맷])    => 결과값 CHARACTER 타입 

1) 숫자  -->  문자타입 변환

SELECT TO_CHAR(1234,'99999') FROM DUAL; -- 다섯칸 자리 공간 확보, 오른쪽 정렬, 빈칸 공백으로 채움 ( 기존 한칸은 음수값을 위해 한자리 더 확보되어있음)
SELECT TO_CHAR(1234,'00000') FROM DUAL; -- 다섯칸 자리 공간 확보, 오른쪽 정렬, 빈칸 0으로 채움 
SELECT TO_CHAR(1234,'L99999') FROM DUAL; -- 'L': 현재 설정된 나라의 화폐단위  
SELECT TO_CHAR(1234,'fmL99999') FROM DUAL; -- 'FM' : 공백을 없앨때 사용 
SELECT TO_CHAR(1234,'$99999')FROM DUAL; -- 달러표시 
SELECT TO_CHAR(1234,'L99,999') FROM DUAL;-- 1000단위 ',' 찍기

SELECT EMP_NAME, TO_CHAR(SALARY,'L999,999,999')
FROM EMPLOYEE

2) 날짜 --> 문자타입 변환 

- 년도와 관련된 포맷

SELECT TO_CHAR(SYSDATE,'YYYY'), --2022  YYYY -> 현재세기로 반영
       TO_CHAR(SYSDATE,'YY'),  --22
       TO_CHAR(SYSDATE,'RRRR'), --2022  RRRR -> 두자리 년도가 50이상일 경우 이전세기로 반영 
       TO_CHAR(SYSDATE,'RR'), --22
       TO_CHAR(SYSDATE,'YEAR') --TWENTY TWENTY-TWO
FROM DUAL;

-월과 관련된 포맷

SELECT TO_CHAR(SYSDATE,'MM'), --11
       TO_CHAR(SYSDATE,'MON'), --11월
       TO_CHAR(SYSDATE,'MONTH'), --11월 
       TO_CHAR(SYSDATE,'RM')-- 로마기호 XI
FROM DUAL;

-일과 관련된 포맷 

SELECT TO_CHAR(SYSDATE,'DDD'), --년 기준 몇일째
       TO_CHAR(SYSDATE,'DD'), -- 월 기준 몇일째 
       TO_CHAR(SYSDATE,'D') -- 주 기준 몇일째 (1~7, 일~토)
FROM DUAL;

-요일과 관련된 포맷 

--요일에 대한 포맷
SELECT TO_CHAR(SYSDATE,'DAY'), --수요일
       TO_CHAR(SYSDATE,'DY') --수 
FROM DUAL;

-시간 관련 포맨

SELECT TO_CHAR(SYSDATE,'AM HH:MI:SS') FROM DUAL; -- HH: 12시간 형식 
SELECT TO_CHAR(SYSDATE,'PM HH24:MI:SS') FROM DUAL; --HH24 : 24시간 형식 
SELECT TO_CHAR(SYSDATE,'PM fmHH24:MI:SS') FROM DUAL; -- fm : FM 붙은자리 이후에 모든 0을 제거

예시 )  2022년 11월 16일 (수) 와 같은 형식으로 출력

SELECT EMP_NAME, TO_CHAR(HIRE_DATE,'YYYY"년" MM"월" DD"일" (DY)')
FROM EMPLOYEE;
--포맷 내에서 임의의 문자열갑을 쓰고자할 경우 " "쌍따옴표로 묶어서 표현해야함

 

2. TO_DATE : 숫자, 문자타입의 데이터를 날짜 타입으로 변환시켜주는 함수 

 TO_DATE(숫자|문자, [포맷])   => 결과값 DATE타입

1)숫자 --> 날짜 타입 변환 

SELECT TO_DATE(20100101) FROM DUAL; --10/01/01
SELECT TO_DATE(100101) FROM DUAL;  --10/01/01
SELECT TO_DATE(1001) FROM DUAL; --에러 (4자리는 인식안됨)
SELECT TO_DATE('070101') FROM DUAL; --> 첫자리가 0이면 문자열로 제시

2) 문자 --> 날짜 타입변환

SELECT TO_DATE('041030 143005','YYMMDD HH24MISS') FROM DUAL;-- HH 12시간형태/ HH24 24시간 형태 

SELECT TO_DATE('140630','YYMMDD') FROM DUAL; --2014년
SELECT TO_DATE('980630','YYMMDD') FROM DUAL; --2098년
-- YY : 무조건 현재세기로 반영 

SELECT TO_DATE('140630','RRMMDD') FROM DUAL; --2014년 
SELECT TO_DATE('980630','RRMMDD') FROM DUAL; --1998년
-- RR : 해당 두자리 년도가 50미만일 경우 현재세기로 반영 , 50이상일 경우 이전세기로 반영

 

3. TO_ NUMBER : 문자타입의 데이터를 숫자타입으로 변환

 TO_NUMBER(문자, [포맷])   -> 결과값 NUMBER타입 

SELECT TO_NUMBER('05123485') FROM DUAL;
SELECT '1000000' + '550000' FROM DUAL; -- 오라클에서는 자동형변환 잘되어있음 

SELECT '1,000,000' + '550,000' FROM DUAL; -- 에러발생 
SELECT TO_NUMBER('1,000,000','999,999,999') + TO_NUMBER('550,000','999,999,999') FROM DUAL;

 

복사했습니다!