개발 공부중

[ORACLE] ORA-01722: 수치가 부적합 합니다 해결방법 본문

ORACLE

[ORACLE] ORA-01722: 수치가 부적합 합니다 해결방법

개발자 leelee 2024. 12. 3. 21:50


INSERT 기능을 새로 만든 후 폼전송을 하는데,  ORA-01722: 수치가 부적합합니다 에러가 떴다.

 

 

 

ORA-01722: 수치가 부적합합니다 오류 원인

 

1. 숫자형 컬럼에 문자열이나 특수문자가 포함된 값을 삽입하려고 할 때
2. 숫자로 변환할 수 없는 문자열을 숫자형 함수나 연산에 사용하려고 할 때
3. 숫자 형식에 맞지 않는 데이터(예: 쉼표 포함 숫자)를 사용하려고 할 때

 

 

나의 경우는 3번.

테이블 생성시 NUMBER 타입의 컬럼을 만들었는데, 여기에 쉼표가 포함된 문자열을 INSERT해서 발생한 에러였다.

확인해보니 1000단위 이상을 입력하니 쉼표가 자동으로 생기고 있었던 것.

 

 

해결과정 

 

내가 제일 고민한 건,

1. java로 처리 : 입력값에서 쉼표를 삭제 replaceAll

2. JavaScript 로 처리 : 사용자가 입력할 때 숫자만 입력 가능하게 replace(/[^0-9]/g, '')

3.데이터베이스 단에서 처리 : TO_NUMBER(REPLACE...)

이 중 뭘로 처리하지 ?? 였다.

 

 

나는 1번이 제일 안전해보였다.

price.replaceAll(",", "");

 

replaceAll(",", "") 메서드를 사용하여 문자열에 포함된 모든 쉼표를 없앤 다음 값을 보냈다.

 

 

 

이미 replaceAll로 전화번호도 받고 있었는데 쉼표는 놓쳤다..

금액은 보통 쉼표가 들어가니까 조심해야겠다.

 

 

끝!

Comments