본문 바로가기
오류 해결

[Oracle] ORA-00932: 일관성 없는 데이터 유형: NUMBER이(가) 필요하지만 CHAR임

by 쿠쿠씨 2024. 1. 19.
반응형

 

CASE문으로 쿼리를 작성하다가 오류가 발생했습니다.

 

원인

CASE문에서 THEN, ELSE 절의 반환되는 타입을 달라서입니다.

 

예시

SELECT
	CASE                   
		WHEN LENGTH(A.SEQ) <= 3 THEN A.SEQ      -- NUMBER TYPE
		ELSE SUBSTR(A.SEQ, -3)               	-- CHAR TYPE   
	END AS SEQ
FROM TEST_TABLE A

 

SEQ 컬럼은 NUMBER 타입입니다.

SEQ가 세 자리 이하이면 그대로 출력하고, 세 자리 이상이면 뒤의 세 자리만 출력하려고 했습니다.

그런데 THEN 절에서는 NUMBER 타입을 반환하고, ELSE 절에서는 CHAR 타입을 반환하였기 때문에

"ORA-00932: 일관성 없는 데이터 유형: NUMBER이(가) 필요하지만 CHAR임" 오류 메시지가 나왔습니다.

 

해결방법

CASE문에서 THEN, ELSE 절의 반환되는 타입을 같은 타입으로 맞춰줍니다.

SELECT
	CASE                   
		WHEN LENGTH(A.SEQ) <= 3 THEN TO_CHAR(A.SEQ)	-- CHAR TYPE
		ELSE SUBSTR(A.SEQ, -3)               		-- CHAR TYPE   
	END AS SEQ
FROM TEST_TABLE A

 

 

 

반응형

댓글