Oracle SQL에서의 문자열 간 덧셈 연산 오류와 이유에 대한 설명

summer·2024년 1월 4일
SELECT '1,000,000' + '55,000' 
FROM DUAL;

해당 코드를 작동시키면 오류가 난다

숫자로 자동형변환 잘 해준다고 하여 해당 문자열을 사용하면 오류난다

오류코드 ORA-01722: invalid number'

  1. 오류 발생이유

주어진 쿼리에서 오류가 발생하는 이유는 ‘+’ 연산자가 숫자간의 덧셈을 의미하는 것으로 해석되면서

‘1,000,000’‘55,000’는 쉼표로 구분된 문자열로 보기 때문에 숫자로 변환할 수 없는 문자열로 해석이 된다.

  1. 해결 방안
SELECT TO_NUMBER('1,000,000', '9,999,999') + 
	   TO_NUMBER('55,000', '99,999')
FROM DUAL; 

해당 쿼리를 사용하여 숫자타입으로 만든 후에
1055000이라는 숫자타입의 결과를 반환 할 수 있다.

profile
내가 모를수도 떠올리지 못했을수도 내가 무지했을수도

0개의 댓글