[Oracle] 오라클 CAST 함수 사용법 (데이터 형 변환)

오라클 SQL에서 데이터의 형 변환을 하기 위해서는 CAST 함수를 사용할 수 있다. 오라클에서 형 변환을 할 때는  TO_CHAR, TO_DATE, TO_NUMBER 함수를 많이 사용하지만, CAST 함수는 다른 DBMS와 호환이 가능한 표준 함수이며, CAST 함수만의 장점이 있기 때문에 익혀두면 많은 도움이 될 수 있다.

 

목차

 

CAST 함수 기본 사용법

SELECT CAST(7566 AS VARCHAR2(4))      AS number_to_char
     , CAST('1981-04-02' AS DATE)     AS char_to_date
     , CAST('2975' AS NUMBER(5))      AS char_to_number1
     , CAST('2975.45' AS NUMBER(5,1)) AS char_to_number2
  FROM dual

 

 

CAST(값 AS 데이터타입 [ error [, fmt [, 'nlsparam' ]]])

error, fmt, nlsparam은 생략할 수 있다.

 

문자열을 숫자로 변환 시 소수점 자릿수를 지정할 수 있는데, 반올림하여 지정한 자릿수까지만 표시된다.

CAST('2975.45' AS NUMBER(5,1)) 2975.5

 

테이블에서 조회 시 사용법

SELECT empno
     , hiredate
     , sal
     , CAST(empno AS VARCHAR2(4))     AS number_to_char
     , CAST(hiredate AS VARCHAR2(19)) AS date_to_char 
     , CAST(sal AS NUMBER(5))         AS number_to_char
  FROM emp
 WHERE job = 'MANAGER'

 

 

실제 테이블의 칼럼을 조회할 때도 동일하게 사용하면 된다.

 

CAST 함수 형 변환 시 오류 처리 방법

SELECT CAST('2023-99-99' AS DATE)
  FROM dual

 

ORA-01843: 지정한 월이 부적합합니다.
01843. 00000 -  "not a valid month"

 

문자열의 날짜가 형식이 맞지 않으면 쿼리문에서 오류가 발생한다. CONVERSION ERROR 키워드를 사용하여 오류가 발생할 경우 예외처리를 하여 쿼리문이 정상적으로 수행할 수 있도록 할 수 있다.

 

SELECT CAST('2023-99-99' AS DATE DEFAULT NULL ON CONVERSION ERROR)
  FROM dual

 

 

지정할 문자열을 날짜로 변환 시 오류가 발생하면, DEFAULT 값 NULL을 반환하고 쿼리문은 정상적으로 실행된다.

 

SELECT CAST('N/A' AS NUMBER)
  FROM dual

 

ORA-01722: 수치가 부적합합니다
01722. 00000 -  "invalid number"

 

문자열이 숫자 형식이 아니면 형 변환 시 오류가 발생한다.

 

SELECT CAST('N/A' AS NUMBER DEFAULT 0 ON CONVERSION ERROR)
  FROM dual

 

 

문자열을 숫자로 변환 시 오류가 발생하면, DEFAULT 값 0을 반환한다.

 

CAST 함수 형 변환 시 fmt 사용법

SELECT CAST('-2975' AS NUMBER, 'S999999')           AS char_to_number1 --부호문자열
     , CAST('+2975.25' AS NUMBER, 'S999999.99')     AS char_to_number2 --부호문자열
     , CAST('2,222,975' AS NUMBER, '999,999,999')   AS char_to_number3 --금액문자열
     , CAST('$2,222,975' AS NUMBER, '$999,999,999') AS char_to_number4 --금액문자열
  FROM dual

 

 

숫자형식의 문자열이지만 특수문자가 포함되어 있을 경우 fmt를 지정하면 오류 없이 형 변환이 된다.

fmt는 오라클 12.2 버전부터 사용할 수 있다.

 

SELECT CAST('02/17, 2024' AS DATE, 'mm/dd, yyyy')  AS char_to_date1
     , CAST('February 17, 2024, 11:00 A.M.' AS DATE
            DEFAULT NULL ON CONVERSION ERROR,
            'Month dd, YYYY, HH:MI A.M.',
            'NLS_DATE_LANGUAGE = American')        AS char_to_date2
  FROM dual

 

 

변환할 문자열의 날짜 형식이 American인 경우 NLS_DATE_LANGUAGE를 설정하여 변환할 수 있다.

 

 

[Oracle] 오라클 TO_CHAR 함수 사용법

오라클에서 쿼리문을 작성할 때 TO_CHAR() 함수는 날짜, 숫자 등의 값을 문자열로 변환하는 함수이다. 자주 사용하는 기본 함수이므로 아래의 다양한 변환 방법을 알고 있으면 많은 도움이 된다.

gent.tistory.com

 

[Oracle] 오라클 TO_DATE 함수 사용법

오라클에서 문자열을 날짜형 데이터로 형 변환을 하기 위해서는 TO_DATE 함수를 사용하면 된다. TO_DATE("문자열", "날짜 포맷") 아래의 예제를 보면 쉽게 이해할 수 있다. SELECT TO_DATE('2021-12-12', 'YYYY-MM

gent.tistory.com

 

[Oracle] 오라클 TO_NUMBER 함수 사용법

오라클에서 문자열을 숫자형으로 변환하기 위해서는 TO_NUMBER 함수와 CAST 함수를 사용할 수 있다. 문자열에 수치 값 외에 문자가 포함되어 있으면 형 변환 시 오류가 발생하는데, 오류를 미리 예

gent.tistory.com

 

댓글

Designed by JB FACTORY