카테고리 없음

[SQL] 08. (4) 단일행 형변환 함수

NOHCODING 2021. 11. 21. 19:25
반응형

 

 

 

(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

 

 

반응형