카테고리 없음
Oracle(2022.02.15)2-CAST,TO_CHAR
AIN99
2022. 2. 15. 19:21
728x90
형변환함수
- 자료의 형을 일시적으로 변환
- CAST,TO_CHAR,TO_DATE, TO_NUMBER
1)CAST
.명시적 형변환
(사용형식)
CAST(expr AS 타입명)
-'expr'을 '타입명'으로 형을 변환하여 반환함
-'expr'은 변환 가능한 자료 이어야 함
-시분초 14자리 년원일 8자리 두개를 다 표현하고 싶다면 두 묶음을 완벽하게 기술 뭐하나 뺄 수는 없다.
사용예)
SELECT SUBSTR(CART_NO,1,8),
CAST(SUBSTR(CART_NO,1,8) AS DATE) AS 날짜,
CART_PROD AS 상품코드,
CART_QTY AS 수량
FROM CART
WHERE CART_NO LIKE '200507%'
ORDER BY 1;
:
데이터 생략
2)TO_CHAR
.문자열(CHAR, CLOB=>VARCHAR2), 숫자, 날짜 자료형을 문자열형으로 변환
(사용형식)
TO_CHAR(expr,'fmt')
2-1)날짜형식문자열
형식문자열 | 의미 | 사용예 |
AD, BC | 서기 | SELECT TO_CHAR(SYSDATE,'BC') FROM DUAL; -->서기인지 기원전인지 알아서 판단 그래서 BC를 써도 지금이 서기이므로 서기가 나옴 |
YYYY,YYY,YY,Y | 년도 | SELECT TO_CHAR(SYSDATE,'BC YYYY YYY YY Y')FROM DUAL; -->오른쪽 끝에서 3글자 뗀다. 즉 기준은 오른쪽 끝에서 부터 |
Q | 분기 | SELECT TO_CHAR(SYSDATE, 'YYYY Q')FROM DUAL; -->1년은 4로 나눠서 1-3 1쿼터,4-6은 2쿼터 7-9,10-12...이런형식으로 |
MM, RM | 월 | SELECT TO_CHAR(SYSDATE, 'YY MM RM') FROM DUAL; -->RM :로마식 숫자 표현 |
MON,MONTH | XX월 | SELECT TO_CHAR(SYSDATE, 'YY MONTH MON') FROM DUAL; -->월이라는 단어가 같이 출력된다. |
DD | 일 | SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL; -->2월15일이면 2월1일로 부터 경과된 일수 즉 2월들어서 |
DDD | SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD DDD D') FROM DUAL; -->2022년1월1일부 터 지금까지 경과되어진 전체 일수,D:화요일이면 3 | |
DAY, DY | 요일 | SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD D DY DAY') FROM DUAL; -->DAY:풀네임 , DY:축약형 |
형식문자열 | 의미 | 사용예 |
W,WW | 주차 | SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD W WW') FROM DUAL; -->1년:53주 W:해당월들어와서의 주차, WW:2022년도1월부터 지금까지 경과되어진 주차수 |
J | 줄리안 일자 | SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD J') FROM DUAL; |
HH, HH24, HH12 | 시간 | SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH HH12 HH24') FROM DUAL; |
MI | 분 | SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD MI') FROM DUAL; |
SS,SSSSS | 초 | SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS SSSSS') FROM DUAL; -->SSSSS:0시0분0초에서부터 지금이시간까지 계산된 시간을 초로환산 |
"문자" | 기타 | SELECT TO_CHAR(SYSDATE, 'YYYY"년" MM"월" DD"일"') FROM DUAL; -->사용자 형식은 ""로 묶여야 한다. |
YYYY: 년, MM: 월, DD: 일, HH24: 24시간, HH: 12시간, MI: 분, SS:초
2-2)숫자형식문자열
형식 문자열 | 의 미 |
9 | 숫자와 대응되어 유효숫자는 숫자 출력/무효의 0은 공백으로 대치 |
0 | 숫자와 대응되어 유효숫자는 숫자 출력/무효의 0도 0을 출력 |
MI | 데이터가 음수이면 자료 오른쪽 끝에 '-'부호 출력 |
PR | 데이터가 음수이면 자료를 '< >'안에 출력 |
$,L | 데이터 왼쪽에 화폐기호 삽입출력 |
,(COMMA) | 3자리마다 자리점 출력 |
.(DOT) | 소숫점 출력 |
사용예) SELECT TO_CHAR(123456.789, '999,999.99'),
TO_CHAR(-123456.789, '999,999MI'),
TO_CHAR(-123456.789, '999,999PR'),
TO_CHAR(123456.789, 'L999,999.0')
FROM DUAL;
728x90