본문 바로가기
2.2 DB/Oracle Error

[Oracle Error] ORA-00932: "inconsistent datatypes" /일관성 없는 데이터 유형

by Dohi._. 2024. 10. 10.
728x90

ORA-00932

  • inconsistent datatypes: expected [필요한 타입] got [들어온 타입]
  • 일관성 없는 데이터 유형: [필요한 타입]이(가) 필요하지만 [들어온 타입]

ORA-00932는 Oracle 데이터베이스에서 발생하는 오류로, 데이터 유형이 일치하지 않을 때 발생합니다.

즉, 주로 SQL 쿼리에서 필요한 타입(기대하는 데이터 타입 )과 실제 들어온 데이터 타입이 다를 경우 나타납니다.

 

주요 원인

  1. 잘못된 데이터 유형 비교: SQL 쿼리에서 서로 다른 데이터 타입을 비교하려고 할 때 발생.
  2. 잘못된 함수 사용: 함수의 인자나 반환값의 데이터 타입이 필요와 다를 때 발생
  3. 서브쿼리 문제: 서브쿼리에서 반환하는 데이터 타입이 주 쿼리에서 필요한 타입과 다를 경우에 발생

 

[Oracle] 시간과 숫자를 원하는 단위까지 절사하는 함수 (TRUNC) 포스팅에 나온 에러

 


해결법

  • 데이터 유형 확인: 쿼리에서 사용하는 데이터 유형이 일치하는지 확인
  • 형 변환 사용: 필요한 경우 데이터 유형을 일치시키기 위해 형 변환 함수를 사용. (e.g. TO_NUMBER, TO_CHAR) 
  • 서브쿼리 점검: 서브쿼리를 사용하는 경우, 서브쿼리의 반환 데이터 타입과 주 쿼리에서 필요한 타입 동일한지 확인

 

예시)

SELECT *
FROM employees
WHERE employee_id = '100'; -- employee_id의 타입이 NUMBER인경우

 

 

  • ORA-00932: inconsistent datatypes: expected NUMBER got CHAR
  • 일관성 없는 데이터 유형: NUMBER 이(가) 필요하지만 CHAR

예시 에러 이유

필요한 타입: employee_id가 숫자형 (NUMBER)이어야 합니다.

들어온 타입: 쿼리에서 문자열 '100'을 사용하고 있기 때문에, Oracle은 이를 문자형 (CHAR)으로 인식합니다.

NUMBER가 들어와야 하는데 문자형이 들어오다 보니 에러가 난 상황

 

해결

 

데이터 유형확인후 형변환을 실시 

SELECT *
FROM employees
WHERE employee_id = 100;

-- 조금 오바해서 
SELECT *
FROM employees
WHERE employee_id = TO_NUMBER('100');

 

결론

즉, ORA-00932 오류는 데이터 유형이 일치하지 않아 발생하는 오류입니다. 

 

 

 

 

728x90

댓글