ORACLE SQL

SQL 함수_ 형변환

최종군 2024. 7. 22. 20:14


 * 형변환 함수 : 데이터타입 변경해주는 함수 
         
         - 문자 / 숫자 / 날짜 
    
    TO_CHAR : 숫자 또는 날짜 타입의 값을 문자 타입으로 변환시켜주는 함수 
    
    [표현법]
     

       TO_CHAR(숫자|날짜[, 포맷])
      -- 숫자타입 --> 문자타입 

 

 

SELECT TO_CHAR(1234),TO_CHAR(1234, '999999') "포맷데이터" FROM DUAL;
-- '9' : 개수만큼 자리수를 확보하고. 오른쪽 정렬. 빈칸은 공백으로 채움. 

 

 

SELECT EMP_NAME, SALARY, TO_CHAR(SALARY*12, 'L9,999,999,999')
FROM employee;

 

 

 

 

SELECT sysdate, TO_CHAR(sysdate, 'PM HH24:MI:ss')FROM Dual;

 

 

TO_CHAR를 활용하여 

 

SELECT EMP_name, TO_char(HIRE_DATE, 'yyyy"년"MM"월"DD"일"')
FROM employee

 

-- 큰 따움표로 묶어준다. "년"

-- 표시할 문자(글자)는 큰따움표""로 묶어서 형식에 제시해야 함

 

 

SELECT TO_CHAR(SYSDATE,'DD') "일 정보", TO_CHAR(SYSDATE, 'DDD') "몇번째 일수"
               , TO_CHAR(SYSDATE, 'D') "요일 정보", TO_CHAR(SYSDATE, 'DAY') "요일정보2"
               , TO_CHAR(SYSDATE, 'DY') "요일 정보3"
FROM DUAL;

 

TO_CHAR(SYSDATE, 'DDD') "몇번째 일수" 201이 출력됨

 


 

* TO_DATE : 숫자타입 또는 문자타입을 날짜타입으로 변경하는 함수 

SELECT TO_DATE(020222) FROM DUAL;
-->오류가 나는 이유 0으로 시작해서 숫자는 0으로 시작하면 안된다 

 

 

SELECT TO_DATE('20240719 104900', 'YYYYMMDD HH24MISS') FROM DUAL;
--> 이경우에는 형식을 지정해야된다

 

 


TO_NUMBER : 문자 타입의 데이터를 숫자타입으로 변경 시켜주는 함수 

 

[표현법] 

 TO_NUMBER(문자[, 포맷]) : 문자에 대한 포맷을 지정(기호가 포함되거나 화폐단위 포함되는 경우.....)

 

TO_NUMBER('0123456789') FROM DUAL;

 

SELECT '10000' + '500' FROM DUAL;
자동으로 문자타입을 숫자 타입으로 변환되어 산술연산 수행된다. 

 

SELECT '10,000' + '500' FROM DUAL; --> 안되는 경우

 

SELECT TO_NUMBER('10,000', '99,999')  + TO_NUMBER('500','999')FROM DUAL;

형식을 지정해야 된다.