'ORA-00932: 일관성 없는 데이터 유형' 오류는 예상한 데이터타입과 실제 획득한 데이터타입이 다른 경우에 발생하는데요, 이에 따라 메시지가 바뀌어 출력이 됩니다. 예를 들면 다음과 같이 말이지요.
ORA-00932: 일관성 없는 데이터 유형
- ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
- ORA-00932: inconsistent datatypes: expected NUMBER got DATE
- ORA-00932: inconsistent datatypes: expected CHAR got LONG
자주 발생하는 유형은 다음과 같습니다.
- 숫자의 형태를 가지고 있는 데이터타입과 숫자를 혼용하는 경우
- 캐릭터 데이터타입, 4000바이트를 초과하여 LOB 형태로 변환이 된 데이터타입과 비교하는 경우
이번 시간에는 숫자 형태를 예시로 안내해드리겠습니다.
오류 발생 쿼리
다음 쿼리를 실행하면 오류가 발생합니다.
SELECT CASE 0 WHEN 0 THEN 1 ELSE '2' END FROM DUAL;
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got CHAR오류 원인과 해결 방법 안내
오류 원인: CASE 문에서 THEN과 ELSE 절에 사용된 데이터 타입이 일치하지 않습니다. THEN 절에서는 숫자(1), ELSE 절에서는 문자('2')를 사용하고 있기 때문에 데이터 타입 불일치 오류가 발생합니다.
조치: 데이터 타입을 일치시키기 위해 THEN과 ELSE 절의 값을 모두 숫자로 변경하거나, 모두 문자로 변경합니다.
모두 숫자로 변경하는 방법
SELECT CASE 0 WHEN 0 THEN 1 ELSE 2 END FROM DUAL;
-----------------------
                      1위의 쿼리는 THEN과 ELSE 절 모두 숫자를 사용하여 데이터 타입 불일치 문제를 해결할 수 있어요.
모두 문자로 변경하는 방법
SELECT CASE 0 WHEN 0 THEN '1' ELSE '2' END FROM DUAL;
--
1이 쿼리는 THEN과 ELSE 절 모두 문자를 사용하여 데이터 타입 불일치 문제를 해결해요.
오류 원인과 조치 설명
원인: 다음과 같은 경우에 데이터 타입 불일치 오류가 발생할 수 있습니다.
- 서로 다른 데이터 타입 간의 연산 시도 (예: 숫자와 문자 더하기).
조치: 데이터 타입이 다른 경우, 일관된 데이터 타입을 사용하도록 변경합니다. 예를 들어, 문자 필드를 숫자 필드와 연산하기 전에 TO_NUMBER 함수를 사용하여 숫자로 변환할 수 있습니다.
이와 같이 데이터 타입을 일치시켜 쿼리를 작성하면 'ORA-00932: inconsistent datatypes' 오류를 해결할 수 있습니다. 😊
