현상
쿼리 수행 시 5074:Given string does not represent a number in proper format 에러가 발생합니다.
원인
숫자형으로 변환하려는 값에 숫자가 아닌 문자가 포함되어 있어 변환 과정에서 오류가 발생합니다.
해결
문자가 포함되어 있는 데이터를 찾아 수정합니다.
아래는 재현 테스트입니다.
-- 테스트 케이스
-- 테이블 및 데이터 생성
create table t1 (c1 varchar(8), c2 number(8));
insert into t1 values ('1234567a', 12345678);
insert into t1 values ('12345678', 12345678);
commit;
-- 에러나는 케이스 (숫자로 형변환되면서 문자가 나오면 에러)
select * from t1
where c1 <> 12345678;
;
-5074:Given string does not represent a number in proper format.
-- 정상 케이스
select * from t1
where c1 <> '12345678';
C1 C2
-------- ----------
1234567a 12345678
1 row selected.
문자 포함된 데이터 찾는 방법
-- 숫자외 문자가 포함된 로우 찾는 쿼리1
select * from t1
where translate(c1, '0123456789', ' ') is not null;
C1 C2
-------- ----------
1234567a 12345678
1 row selected.
-- 숫자외 문자가 포함된 로우 찾는 쿼리2
select * from t1
where not regexp_like(c1, '^\d+$');
C1 C2
-------- ----------
1234567a 12345678
검색된 문자열을 삭제 및 갱신 후 쿼리 수행
SQL
복사