개발공작소
article thumbnail
728x90

 

 

 

 

오라클 쿼리를 갖고 놀고 있는데 다음과 같은 에러가 발생했다.

 

 

ORA-01790: expression must have same datatype as corresponding expression 에러

 

 

UNION ALL을 가지고 각 SELECT문을 연결하는데 데이터타입이 맞지 않아 그렇다는 것..

 

 

 

문제의 쿼리문

SELECT * FROM (
	SELECT LENGTH(' 고급_츄르츄르 ') AS "길이" from DUAL UNION ALL
	SELECT LENGTH(TRIM('열빙어 ')) AS "길이" from DUAL UNION ALL
	SELECT TRIM('Kanagan ') AS "길이" from DUAL
);

 

 

보면, 위 2개의 SELECT문은 정수형을 리턴하는데, 맨 아래에 있는 SELECT문은 문자열을 리턴한다.

즉, 결과로 리턴되는 값들의 데이터타입이 일치해야 하는데, 일치 하지 않으니, 일치 시켜라 라는 에러인 것..

 

 

 

수정한 쿼리문

SELECT * FROM (
	SELECT LENGTH(' 고급_츄르츄르 ') AS "길이" from DUAL UNION ALL
	SELECT LENGTH(TRIM('열빙어 ')) AS "길이" from DUAL UNION ALL
    -- LENGTH로 감싸서 정수형으로 리턴
	SELECT LENGTH(TRIM('Kanagan ')) AS "길이" from DUAL
);

 

 

 

 

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!