본문 바로가기
Database

[ORACLE] CAST() 사용법과 실전 예제 : 숫자, 날짜, 문자 변환까지

by Engineer J 2025. 6. 6.

오라클 CAST() 사용법과 실전 예제: 숫자, 날짜, 문자 변환까지
[Oracle] CAST

 

1. 오라클 CAST 함수란?

CAST() 함수는 오라클에서 하나의 데이터 타입을 다른 데이터 타입으로 변환할 때 사용하는 SQL 표준 함수입니다. 예를 들어 문자열을 숫자로, 숫자를 날짜로 변환할 수 있습니다.

CAST (expression AS data_type)

CAST 함수는 ANSI SQL 표준을 따르므로, 오라클 외 다른 RDBMS에서도 광범위하게 사용됩니다.

2. CAST 함수 기본 사용법

-- 문자열을 숫자로 변환
SELECT CAST('100' AS NUMBER) FROM DUAL;

-- 숫자를 문자열로 변환
SELECT CAST(2025 AS VARCHAR2(10)) FROM DUAL;

위 예제는 각각 문자열을 숫자로, 숫자를 문자열로 변환하는 방식입니다. 숫자 → 문자열 변환 시에는 VARCHAR2의 길이를 반드시 명시해야 합니다.

3. 주요 변환 가능한 데이터 타입

  • CHAR, VARCHAR2: 문자열
  • NUMBER: 숫자
  • DATE: 날짜
  • TIMESTAMP: 날짜 + 시간
  • INTERVAL: 시간 간격

4. 날짜 관련 변환 예제

-- 문자열을 날짜로 변환
SELECT CAST('2025-06-05' AS DATE) FROM DUAL;

-- TIMESTAMP로 변환
SELECT CAST(SYSDATE AS TIMESTAMP) FROM DUAL;

주의할 점은, 오라클에서 DATE는 시간까지 포함된 7바이트 데이터 형식이며, TIMESTAMP는 마이크로초까지 표현할 수 있는 더 정밀한 타입입니다.

5. CAST vs TO_CHAR / TO_DATE / TO_NUMBER

오라클에서는 TO_XXX 함수들과 CAST 함수가 유사한 역할을 합니다. 하지만 TO_XXX 함수는 오라클 고유 함수이며, CAST는 ANSI SQL 표준입니다.

-- 숫자 → 문자
TO_CHAR(1234) == CAST(1234 AS VARCHAR2(10))

-- 문자 → 숫자
TO_NUMBER('1234') == CAST('1234' AS NUMBER)

TO_XXX 함수는 포맷 지정이 가능하다는 장점이 있습니다.

6. 실무 활용 예제

6.1 통계 및 집계 함수 내 변환

-- 평균값을 소수점으로 표현
SELECT CAST(AVG(salary) AS NUMBER(10,2)) AS avg_salary FROM employees;

6.2 날짜 비교 및 정렬

SELECT * FROM events
ORDER BY CAST(event_time AS TIMESTAMP);

6.3 조건문에서 사용

SELECT * FROM users
WHERE CAST(registration_date AS DATE) = TO_DATE('2025-06-05', 'YYYY-MM-DD');

7. 에러 발생 사례 및 해결 방법

ORA-01722: invalid number는 문자열을 숫자로 변환할 때, 해당 문자열이 숫자로 해석될 수 없는 경우 발생합니다.

-- 오류 예제
SELECT CAST('abc' AS NUMBER) FROM DUAL; -- 실패

이 경우 REGEXP_LIKEISNUMERIC 유사 로직을 활용해 사전 검증이 필요합니다.

8. 성능 및 최적화 팁

  • CAST는 인덱스를 무효화시킬 수 있으므로 WHERE 절에서 주의
  • 변환이 자주 발생하는 컬럼은 가상 컬럼 또는 함수 기반 인덱스 고려
  • TO_CHAR 등 오라클 고유 함수와의 비교를 통해 성능 테스트 권장

9. 요약

CAST 함수는 SQL 표준 기반으로 오라클뿐만 아니라 다양한 데이터베이스 환경에서도 활용할 수 있는 범용적인 형 변환 함수입니다. 숫자, 날짜, 문자 등 다양한 데이터 유형을 유연하게 변환하는 데 필수적이며, 실무에서도 필터링, 조건문, 통계 계산 등 다양한 용도로 사용됩니다.

10. 참고자료 및 출처