본문 바로가기
Data & Programming/Oracle

[Oracle-오류] ORA-01722: 잘못된 숫자 형식입니다.

by 눈부셔™ 2023. 7. 15.
728x90
[Oracle-오류] ORA-01722: 잘못된 숫자 형식입니다.

ORA-01722 오류는 Oracle 데이터베이스에서 자주 발생하는 오류 중 하나로, 데이터베이스의 숫자 형식이 예상과 다른 경우 발생합니다. 이 오류는 숫자를 요구하는 연산이나 함수에 잘못된 형식의 데이터가 전달되었을 때 나타납니다.

■ 원인
ORA-01722 오류는 주로 다음과 같은 상황에서 발생할 수 있습니다:
  ▶ 숫자가 아닌 문자열을 숫자 형식으로 변환하려고 할 때 발생합니다.
  ▶ 숫자로 구성된 문자열에 비숫자 문자가 포함되어 있을 때 발생합니다.
  ▶ 숫자와 비숫자 문자를 혼합하여 사용하는 경우 발생할 수 있습니다.

 

 

 예제
아래는 ORA-01722 오류가 발생할 수 있는 몇 가지 예제입니다:

  ▶ 예제 1: 숫자로 변환할 수 없는 문자열 사용

SELECT * FROM employees WHERE employee_id = 'ABC';

위의 쿼리에서 'ABC'는 숫자 형식이 아닌 문자열입니다. 숫자 형식으로 변환할 수 없는 값이 숫자 데이터 타입 필드에 사용되면 ORA-01722 오류가 발생합니다.

  ▶ 예제 2: 숫자와 비숫자 문자 혼합

SELECT * FROM products WHERE product_id = 'P1234';

위의 쿼리에서 'P1234'는 숫자와 비숫자 문자가 혼합된 문자열입니다. 숫자로만 구성된 값이 숫자 데이터 타입 필드에 사용되어야 하지만, 비숫자 문자가 포함되어 있으면 ORA-01722 오류가 발생합니다.

  ▶ 예제 3: 비숫자 문자 포함

SELECT * FROM orders WHERE order_id = '100A';

위의 쿼리에서 '100A'는 숫자로 구성된 문자열에 비숫자 문자('A')가 포함되어 있습니다. 숫자 데이터 타입 필드에는 숫자만 사용되어야 하므로, 비숫자 문자가 포함되면 ORA-01722 오류가 발생합니다.

 


 해결 방법
ORA-01722 오류를 해결하기 위해 다음과 같은 조치를 취할 수 있습니다:
데이터 형식을 확인하고, 숫자 데이터 타입에는 숫자로만 구성된 값을 사용해야 합니다.
숫자로 구성된 문자열에 비숫자 문자가 포함되어 있는 경우, 비숫자 문자를 제거하고 숫자만 남기도록 수정해야 합니다.
숫자가 아닌 문자열을 숫자로 변환해야 하는 경우, TO_NUMBER() 함수를 사용하여 올바른 형식으로 변환해야 합니다. 

변환이 불가능한 문자열이 있을 경우에는 오류 대신 NULL 값을 반환하도록 처리할 수도 있습니다.

 

728x90