ORA-01722 오류란?
오라클(Oracle) 데이터베이스를 사용하다 보면 ORA-01722: 수치가 부적합합니다 (ORA-01722: invalid number) 오류를 만날 수 있습니다. 이 오류는 문자열 데이터를 숫자로 변환할 때 발생하는 대표적인 오류 중 하나입니다.
ORA-01722 오류 발생 원인
- 숫자 형식이 아닌 값을 숫자 데이터 타입과 비교할 때
- 숫자로 변환할 수 없는 문자열을
TO_NUMBER
함수로 변환할 때 - 숫자 컬럼에 문자열 값을 삽입하려고 할 때
- 암시적 데이터 형 변환이 발생할 때
ORA-01722 오류 발생 예제
1. WHERE 절에서 숫자 컬럼과 문자열 비교
SELECT * FROM employees WHERE employee_id = 'ABC';
2. TO_NUMBER 함수로 변환 불가능한 값 처리
SELECT TO_NUMBER('ABC') FROM dual;
3. 문자열이 포함된 컬럼에서 암시적 변환 오류 발생
SELECT * FROM employees WHERE salary > '5000';
ORA-01722 오류 해결 방법
1. 데이터 타입 일치 확인
SELECT * FROM employees WHERE employee_id = TO_NUMBER('100');
2. CASE 문 활용
SELECT CASE WHEN REGEXP_LIKE(column_name, '^[0-9]+$') THEN TO_NUMBER(column_name) ELSE NULL END FROM table_name;
3. TRY-CATCH (PL/SQL 사용 시)
BEGIN
SELECT TO_NUMBER('ABC') INTO v_number FROM dual;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('변환 오류 발생!');
END;
4. WHERE 절에서 데이터 변환 피하기
SELECT * FROM employees WHERE salary > 5000; -- (X) salary를 TO_NUMBER()로 변환하지 않음
결론
ORA-01722 오류는 SQL 실행 중 숫자 변환 문제로 인해 발생하는 일반적인 오류입니다. 데이터를 조회하거나 삽입할 때는 데이터 타입이 일치하는지 확인하고, 명시적 변환을 사용하는 것이 중요합니다. 위 해결 방법을 적용하면 오류를 방지하고 SQL 성능을 최적화할 수 있습니다.
'ORACLE' 카테고리의 다른 글
오라클 데이터베이스의 블록체인 및 로우코드 지원 (0) | 2025.03.26 |
---|---|
오라클 데이터베이스 23C 주요 업데이트 (0) | 2025.03.26 |
Oracle SQL 튜닝 및 성능 개선 - 고급 SQL 쿼리 최적화 기법 (0) | 2025.03.26 |
ORACLE 커서(Cursor)와 동적 SQL(Dynamic SQL) 활용법 (0) | 2025.03.25 |
ORACLE Flashback Query와 Flashback Table을 활용한 데이터 복구 (0) | 2025.03.25 |