카테고리 없음

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;

CART테이블

                               :

                       데이터 생략


 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글자 뗀다. 즉 기준은 오른쪽 끝에서 부터
분기    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:축약형

 
 

AD, BC
YYYY,YYY,YY,Y
Q
MM, RM
MON,MONTH
DD
DD ,DDD

 

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; -->사용자 형식은 ""로 묶여야 한다.

W,WW
J
HH,HH24,HH!2

YYYY: 년, MM: 월, DD: 일, HH24: 24시간, HH: 12시간, MI: 분, SS:초

MI
SS,SSSSS
"문자"


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