SW/Database / / 2024. 12. 2. 16:55

ORA-01722: Invalid Number / 원인과 해결 방법

반응형

ORA-01722: Invalid Number / 원인과 해결 방법

ORA-01722 오류는 SQL에서 숫자로 변환할 수 없는 값을 사용할 때 발생합니다.

데이터 형식 불일치가 주 원인이며, 적절한 형 변환과 데이터 정리가 필요합니다.

 

ORA-01722: Invalid Number / 원인과 해결 방법

 

 

ORA-01722 오류 설명

이 오류는 Oracle이 SQL 실행 중에 문자열을 숫자로 암시적으로 변환하려 시도할 때 발생합니다. 잘못된 데이터 형식 또는 부적절한 변환 시도가 주된 원인입니다.

오류 원인

ORA-01722 오류의 주요 원인은 다음과 같습니다:

  1. 비숫자 데이터: 숫자로 변환할 수 없는 문자열 데이터가 포함된 경우.
  2. 형 변환 실패: `TO_NUMBER`와 같은 명령어가 잘못된 입력값을 처리하는 경우.
  3. 비교 조건문 오류: 숫자 열과 문자열 열이 직접 비교되는 경우.

해결 방법 및 명령어 예시

ORA-01722 오류를 해결하려면 아래 방법을 시도해 보세요:

1. 문제 데이터 식별

다음 쿼리를 실행하여 문제가 되는 데이터를 찾으세요:

SELECT column_name
FROM table_name
WHERE NOT REGEXP_LIKE(column_name, '^[0-9]+$');

예시 결과:

COLUMN_NAME
------------
ABC123
XYZ

2. 명시적 형 변환 적용

`TO_NUMBER` 함수를 사용하여 데이터 변환을 명시적으로 처리합니다:

SELECT column_name
FROM table_name
WHERE TO_NUMBER(column_name) > 100;

단, 변환 불가능한 데이터가 있다면 오류가 발생할 수 있으므로 주의가 필요합니다.

3. 데이터 정리

숫자 형식만 포함하도록 데이터를 정리하거나, 잘못된 데이터를 수정합니다:

UPDATE table_name
SET column_name = '0'
WHERE NOT REGEXP_LIKE(column_name, '^[0-9]+$');

4. 비교 조건문 수정

숫자와 문자열 간 비교를 피하기 위해 명시적 변환 또는 형식을 일치시키세요:

-- 수정 전 (오류 발생 가능)
SELECT *
FROM table_name
WHERE column_name = '123';

-- 수정 후
SELECT *
FROM table_name
WHERE TO_CHAR(column_name) = '123';

간단 요약

  • ORA-01722 오류는 SQL에서 숫자 변환 오류로 인해 발생합니다.
  • 해결 방법: 데이터 정리, 명시적 형 변환 적용, 비교 조건 수정.

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유