[ORACLE]오라클 ORA-01722: 수치가 부적합합니다. 해결완료

오라클 ORA-01722 에러 해결 방법

 

ORA-01722: 수치가 부적합합니다
01722. 00000 -  "invalid number"
*Cause:    The specified number was invalid.
*Action:   Specify a valid number.

 

 

ora-01722 에러가 나는 이유는

데이터 타입이 일치 하지 않는 경우, 또는 데이터 타입이 다른 연산을 하는 경우 오류가 발생합니다.

 

예를들어서 설명할게요.

 

USER_DATA라는 테이블이 있습니다.

컬럼명 타입 NULL 여부
ID VARCHAR2(10) No
NAME VARCHAR2(10) No
ADDRESS VARCHAR2(100) Yes
USER_NUMBER NUMBER Yes

 

1. 데이터형이 일치하지 않는 경우

NUMBER 타입인 컬럼에 STRING 형이 들어가는 경우,

STRING 타입인 컬럼에 NUMBER 형이 들어가는 경우,

CHAR(1) 타입인 컬럼에 1BYTE 이상 값이 들어가는 경우.

컬럼과 다른 데이터 타입이 일치 하지 않는 경우입니다.

-- USER_NUMBER 타입은 NUMBER 이지만
-- 데이터는 문자형인 'HI'가 입력된 경우
INSERT INTO 
	USER_DATA(ID, NAME, ADDRESS, USER_NUMBER) 
VALUES ('0001','홍길동','서울','hi');


-- 테이블 조회시 USER_NUMBER 타입은 NUMBER 이지만
-- 데이터는 문자형인 'HI'가 입력된 경우
SELECT *
FROM USER_DATA
WHERE USER_NUMBER = 'HI';

 

2. 데이터 타입이 다른 데이터간 연산인 경우

연산의 경우는 같은 타입일 경우에만 가능합니다.

--타입이 다른 데이터간 연산
SELECT '1000K' - 500 FROM DUAL;

 

댓글

Designed by JB FACTORY