Lee's Grow up

[오라클/ORACLE] 형변환 CAST 연산자 , TO_XXXX 함수 ( TO_NUMBER, TO_DATE, TO_CHAR ) 본문

DB/ORACLE

[오라클/ORACLE] 형변환 CAST 연산자 , TO_XXXX 함수 ( TO_NUMBER, TO_DATE, TO_CHAR )

효기로그 2019. 9. 10. 14:01
반응형

1. 형 변환의 원칙


  • 암시적 형 변환은 원하지 않는 결과가 발생할 수 있으니 명시적으로 형 변환을 사용
  • 단순하게 데이터 타입의 변환은 CAST 연산자 사용
  • 데이터 타입의 변환 + 포맷이 필요한 경우는 TO_XXXX 함수를 사용
  • WHERE 절의 컬럼은 형 변환을 최소화

2. CAST 연산자


CAST 연산자는 단순한 데이터 타입 변환에 사용하기 편함

SELECT CAST ( 사원번호 AS VARCHAR(3)) -- 숫자형에서 문자로
      ,CAST ( 부서코드 AS NUMBER(3))  -- 문자에서 숫자로
      ,CAST ( NULL AS VARCHAR(3))    -- NULL 에서 문자로
FROM 사원정보

3. TO_XXXX 함수


특정 형식의 값이 필요한 경우 TO_CHAR, TO_DATE, TO_NUMBER의 형변환 함수 사용

문자 타입함수명문자타입함수명문자타입
 --> TO_CHAR --> <-- TO_CHAR <--
NUMBER CHARACTER DATE
 <-- TO_NUMBER <-- --> TO_DATE --> 

TO_CHAR 포맷 예제

SELECT TO_CHAR(123456789) AS 숫자_문자-- 문자로 취급
FROM DUAL

UNION ALL
SELECT TO_CHAR(123456789,'99999999999') -- 빈자리 공백 처리 포맷
FROM DUAL

UNION ALL
SELECT TO_CHAR(123456789,'00000000000') -- 빈자리 0으로 처리 포맷  
FROM DUAL

UNION ALL
SELECT TO_CHAR(123456789,'999,999,999,999') -- , 단위 구분 
FROM DUAL

UNION ALL
SELECT TO_CHAR(1.23456789,'0.9999999999999') -- 소숫점 
FROM DUAL

UNION ALL
SELECT TO_CHAR(123456789,'$999,999,999,999') -- $ 통화 표시
FROM DUAL

UNION ALL
SELECT TO_CHAR(123456789,'L999,999,999,999') -- 지역 통화 한국의 경우 원표시
FROM DUAL

UNION ALL
SELECT TO_CHAR(1234,'XXX') -- 16 진수로 변환
FROM DUAL

UNION ALL
SELECT TO_CHAR(-12,'999,999pr') -- 음수를 꺽세로 표시
FROM DUAL;

쿼리 실행 결과

DATE FORMAT

FORMAT설명FORMAT설명
YYYY년도 표시 ( 4자리 )YY년도 표시 ( 2자리 )
D요일 표시 ( 1 -7 )DAY요일 표시 ( 월....일 )
DD달의 날짜 표시 ( 1-31 )DDD년의 날짜 표시 ( 1 - 365 )
MM월을 표시 ( 1 - 12 ) MONTH월의 이름 출력 ( 1월..12월 )
WW년의 주 표시 ( 1 - 53 ) IW 년의 주 표시 ( 1 - 53 ) 국제표준
HH시간 표시 ( 1 -12 )MI분 표시
SS초표시  
반응형
Comments