[SQL] SQL 오류 "ORA-01722 : 잘못된 번호"
SQLSQL 오류 "ORA-01722 : 잘못된 번호"
누군가를 위해 아주 쉬운, 다음 삽입 나야을주고있다
왜?
INSERT INTO CUSTOMER VALUES (1,'MALADY','Claire','27 Smith St Caulfield','0419 853 694');
INSERT INTO CUSTOMER VALUES (2,'GIBSON','Jake','27 Smith St Caulfield','0415 713 598');
INSERT INTO CUSTOMER VALUES (3,'LUU','Barry','5 Jones St Malvern','0413 591 341');
INSERT INTO CUSTOMER VALUES (4,'JONES','Michael','7 Smith St Caulfield','0419 853 694');
INSERT INTO CUSTOMER VALUES (5,'MALADY','Betty','27 Smith St Knox','0418 418 347');
해결법
-
==============================
1.ORA-01722 오류는 시도는 숫자로 문자열을 변환하게되며, 문자열을 숫자로 변환 할 수없는 경우에 발생합니다.
ORA-01722 오류는 시도는 숫자로 문자열을 변환하게되며, 문자열을 숫자로 변환 할 수없는 경우에 발생합니다.
당신은 숫자로 값 목록의 끝에있는 숫자 순서를 변환하는 데 노력하고, 그것을 구분 공간이 오류를 던지고있다처럼 테이블 정의를 보지 않고, 그것은 보인다. 그러나 당신이 우리에게 주신 한 정보를 기반으로, 어떤 필드 (첫 번째 제외)에서 발생하는 수 있습니다.
-
==============================
2.한다고 가정 전화 번호이어서 블랭크 숫자로 변환 될 수없는 수를 의미한다 :
한다고 가정 전화 번호이어서 블랭크 숫자로 변환 될 수없는 수를 의미한다 :
create table telephone_number (tel_number number); insert into telephone_number values ('0419 853 694');
위의 당신에게 제공하는
-
==============================
3.여기를 해결하는 하나의 방법이다. 제거 숫자가 아닌 문자는 숫자로 캐스팅.
여기를 해결하는 하나의 방법이다. 제거 숫자가 아닌 문자는 숫자로 캐스팅.
cast(regexp_replace('0419 853 694', '[^0-9]+', '') as number)
-
==============================
4.당신이 숫자 컬럼에 숫자가 아닌 값을 삽입하려고 할 때이 오류가 오면 DB에 당신의 마지막 필드가 숫자가 될 수 있다는 것 그리고 당신은 데이터베이스의 문자열로 보낼 위해 노력하고 있습니다. 마지막 값을 확인.
당신이 숫자 컬럼에 숫자가 아닌 값을 삽입하려고 할 때이 오류가 오면 DB에 당신의 마지막 필드가 숫자가 될 수 있다는 것 그리고 당신은 데이터베이스의 문자열로 보낼 위해 노력하고 있습니다. 마지막 값을 확인.
-
==============================
5.글쎄 그것은 또한 수 있습니다 :
글쎄 그것은 또한 수 있습니다 :
SELECT t.col1, t.col2, ('test' + t.col3) as test_col3 FROM table t;
오라클 연결에 대한 연산자를 이용하는 경우 || 하지 +.
이 경우 얻을 : ORA-01722를 : 유효하지 않은 숫자를 ...
-
==============================
6.이 때문입니다:
이 때문입니다:
으로는 설명 :
이 오류를 해결하려면 :
-
==============================
7.나는이 질문을했다 :
나는이 질문을했다 :
오류 : ORA-01722 : 올바르지 않은 숫자 하나는 문제를 제시하는 것이
나는 그냥 '문자열'을 만들기 위해, 그 명시 적으로 구분하기 위해는 "수치"값을 포위 :
... 봐라 : 그것은 예상 된 결과를 반환합니다.
편집하다: 그리고 실제로 내 테이블의 COL의 acc_num는 문자열로 정의됩니다. 수치 것은 아니지만, 잘못된 번호가보고되었다. 그리고 문자열 숫자의 명시적인 경계 설정 문제를 해결.
한편, 오라클은 숫자로 문자열을 처리 할 수 있습니다. 수치 연산 그래서 / 기능은 문자열에 적용 할 수 있으며 이러한 쿼리가 작동 :
-
==============================
8.내 경우에는 변환 오류가 나는 테이블 생성했다고, 기능 인덱스했다.
내 경우에는 변환 오류가 나는 테이블 생성했다고, 기능 인덱스했다.
삽입 된 데이터는 OK이다. 그것은 실제 오류가 버그가 인덱스에서 온 알아낼 걸 렸어요.
오라클은이 경우에는보다 정확한 오류 메시지를 준 한 수 있다면 좋을 것입니다.
-
==============================
9.당신이에 ...에서 ... 문을 선택 * 삽입을 할 경우, 그것은뿐만 아니라 '잘못된 번호'오류가 발생하기 쉽다.
당신이에 ...에서 ... 문을 선택 * 삽입을 할 경우, 그것은뿐만 아니라 '잘못된 번호'오류가 발생하기 쉽다.
하자 당신이 두 개의 열이있는 테이블이라고 FUND_ACCOUNT이 있다고 :
AID_YEAR char(4) OFFICE_ID char(5)
그리고의 당신은 숫자로하는 OFFICE_ID을 수정할 것을 말하지만, 기존 테이블의 행, 심지어 악화가 있음을하자, 해당 행의 일부 (공백) '의 OFFICE_ID 값을 가지고있다. 오라클에서 테이블에 데이터가있는 경우는 컬럼의 데이터 유형을 수정할 수 없습니다, 그리고 그것은 그래서 여기에 0을 수행하는 방법에 '을'변환하기 위해 약간의 속임수가 필요합니다
FUND_ACCOUNT2 FROM INSERT INTO FUND_ACCOUNT (AID_YEAR, OFFICE_ID) SELECT AID_YEAR 디코드 (OFFICE_ID ','0, OFFICE_ID);
-
==============================
10.이것 역시 내게 일어난하지만 문제는 실제로 달랐다 : 파일 인코딩.
이것 역시 내게 일어난하지만 문제는 실제로 달랐다 : 파일 인코딩.
이 파일은 정확했다,하지만 파일 인코딩이 잘못되었습니다. 그것은 SQL 서버의 수출 유틸리티에 의해 생성되고 난 유니 코드로 저장되었습니다.
파일 자체는 텍스트 편집기에서 좋은 모습,하지만 난 * .bad로 파일을 열 때 거부 된 선으로 생성 된 SQL * 로더, 나는 모든 오리지널 캐릭터 사이에 나쁜 문자를 가지고 보았다. 그럼 난 인코딩에 대한 생각.
나는 메모장에서 원본 파일을 열어 ++ 및 ANSI로 변환, 모든 것이 제대로로드.
-
==============================
11.ORA-01722 오류는 매우 간단합니다. 톰 카이트에 따르면 :
ORA-01722 오류는 매우 간단합니다. 톰 카이트에 따르면 :
어디에 문제가 그러나 처음에는 종종 분명하지 않다. 이 페이지는 문제 해결, 발견에 저를 도와, 내 문제를 해결. 힌트 : 당신은 명시 적 또는 암시 적으로 숫자로 문자열을 변환하는 장소를 찾으십시오. (난 내 코드에서), '문자열을'NVL (number_field을했다.)
-
==============================
12.당신이 잘못된 번호 오류가있을 때뿐만 아니라,이 시도
당신이 잘못된 번호 오류가있을 때뿐만 아니라,이 시도
이에 a.emplid 숫자이며 측면 중 하나를 변환 할 수있어 경우 b.emplid는 그래서 VARCHAR2입니다
여기서 TO_CHAR (a.emplid) = b.emplid
-
==============================
13.당신은 항상 INSERT INTO 직원의 PHONE_NUMBER 값 (TO_NUMBER ( '0419 853 694')에 포함 할 수있는이 error.This을 제거하기 위해 TO_NUMBER () 함수를 사용할 수 있습니다;
당신은 항상 INSERT INTO 직원의 PHONE_NUMBER 값 (TO_NUMBER ( '0419 853 694')에 포함 할 수있는이 error.This을 제거하기 위해 TO_NUMBER () 함수를 사용할 수 있습니다;
from https://stackoverflow.com/questions/12549029/sql-error-ora-01722-invalid-number by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 밑줄 MySQL의 LIKE 쿼리 (0) | 2020.05.14 |
---|---|
[SQL] SQL 서버 : 타임 스탬프 열에 명시 적 값을 삽입 할 수 없습니다 (0) | 2020.05.14 |
[SQL] MySQL은 : 기록의 양의 비율에 의한 LIMIT? (0) | 2020.05.14 |
[SQL] 오라클의 기본 날짜 형식 (0) | 2020.05.14 |
[SQL] TOP에 대한 N 타이 PostgreSQL의 상당 : LIMIT "관계와?" (0) | 2020.05.14 |