다른 테이블에서 데이터를 select해서 insert 해주는 과정에서 error 0 5 705

by 김삼촌 [2015.10.16 11:11:39]


 

 

 

insert into AA(  aa_a, aa_b)

select to_number(nvl(CC_a,0),'999.9'), CC_b

  from CC

where 특정날

 

해서 CC테이블에 데이터를 AA로 넣어주려는데

CC_a, CC_b 는 데이터 타입이 varchar2(500)로 되어있고

aa_a, aa_b 는 데이터 타입이 number(4,1)로 되어있어요.

 

cc_a는 주로 123.4  이런식으로 소수점 첫째자리와 100단위 숫자들

cc_b는 주로 12.3   이런식으로 소수점 첫째자리와 10단위 숫자들(100단위도 있어요) 인데

 

CC_a는 괜찮은데 CC_b에서 자꾸 에러가 나네요

CC_a처럼 to_number도 해보고 별걸 다 해봐도 ORA-01722 수치가 부적합합니다 라는 에러가 납니다

 

어떤걸 확인해봐야될까요?

by 겸댕2후니 [2015.10.16 13:20:49]

CC_b컬럼의 값 중, 숫자와 .을 제외하고 다른문자가 있나 체크하시기 바랍니다.

 


by 김삼촌 [2015.10.16 14:02:06]

다 찾아봤는데 없습니다

 

숫자와 . 밖에 없네요


by 김삼촌 [2015.10.16 14:08:13]

추가로... 인설트 없이 셀렉트만 했을때는 잘 나옵니다


by 창조의날개 [2015.10.16 14:56:52]
insert into AA(  aa_a, aa_b)
select to_number(nvl(CC_a,0),'999.9')
     , to_number(nvl(CC_b,0),'999.9')
  from CC
where 특정날
;

CC_a는 NUMBER로 바꾸고 CC_b는 왜 안바꾸신건지?

 

둘다 바꾸고 해도 안된다면..

 

아래 쿼리로 확인해보세요.

SELECT *
FROM CC
WHERE REGEXP_REPLACE(CC_a,'[0-9.]') IS NOT NULL
   OR REGEXP_REPLACE(CC_b,'[0-9.]') IS NOT NULL
   OR to_number(nvl(CC_a,0),'999999.999') >= 1000
   OR to_number(nvl(CC_b,0),'999999.999') >= 1000
;

 


by 김삼촌 [2015.10.16 16:19:06]

감사합니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입