본문 바로가기

Structured Query Language/Oracle SQL

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

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 초표시    

'Structured Query Language > Oracle SQL' 카테고리의 다른 글

SQL, 알다가도 모르겠는 Window 함수와 예시들  (1) 2023.12.28
SQL OVER 절  (0) 2023.12.19
Oracle SQL_EXTRACT  (0) 2023.09.25
Oracle_SQL CONNECT BY LEVEL  (0) 2023.09.25
Oracle SQL_DUAL  (0) 2023.09.25