< 형변환 함수 >
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;
'ORACLE' 카테고리의 다른 글
ORACLE 02. SELECT(함수) _ 그룹함수 (0) | 2022.11.16 |
---|---|
ORACLE 02. SELECT(함수) _ 단일행 함수_ NULL 처리함수/ 선택함수 (0) | 2022.11.16 |
ORACLE 02. SELECT(함수) _ 단일행 함수_날짜처리함수 (0) | 2022.11.15 |
ORACLE 02. SELECT(함수) _ 단일행 함수_숫자처리함수 (0) | 2022.11.15 |
ORACLE 02. SELECT(함수) _ 단일행 함수_문자처리함수 (0) | 2022.11.15 |