to_char 소수점 질문드려요.. 0 4 5,458

by 손님 [Oracle 기초] to_char [2012.03.13 09:56:45]



insert into TBL_TEST
(VAL1, VAL2, VAL3)
select 0.95, 0, 1.25
   from DUAL;

위와 같은 insert문을 실행하는데요..
TBL_TEST 테이블의 VAL1, VAL2, VAL3은 모두 VARCHAR2형태입니다.

select 0.95, 0, 1.25
   from DUAL;
실행해 보면 당연히

0.95   0   1.25
로 결과 값이 나오는데
TBL_TEST에 insert되는 값은
.95     0 1.25로 들어가 있더라구요

0.95가 필요한 값이라

insert into TBL_TEST
(VAL1, VAL2, VAL3)
select trim(to_char(0.95,'9,990.99')), trim(to_char(0,'9,990.99')), trim(to_char(1.25,'9,990.99'))
   from DUAL;

요렇게 바꿔봤더니.. 0.95는 원하는 형태로 들어가는데
0이 0.00으로 들어가네요..
0일 경우는 그냥 0이었으면 하는데 뭔가 방법이 없을까요?

질문을 위해 데이터도 컬럼갯수도 줄인건데요
실제 insert sql에는 decode같은 걸 쓰기엔.. 너무도 많은 컬럼이라
뭔가 방법이 있을까 해서 문의드립니다.

0.95는 .95가 아닌 0.95로 insert되고
0은 0.00이 아닌 0으로 insert 할 수 있는 방법이 필요해요.

도와주세요!!!
by 이재현 [2012.03.13 11:11:29]


create table work_lee_20120313( c1 number( 2, 2 ) )

insert into work_lee_20120313
select 0.1
  from dual
 
insert into work_lee_20120313
select 0
  from dual
 
select * from work_lee_20120313

commit;


by 손님 [2012.03.13 12:07:03]
질문자입니다.

이재현 님
감사합니다!

그런데..
insert 될 테이블의 컬럼이
number 타입이 아니고 varchar2(20) 요런 형태라서..;;

summary된 데이터가 insert될때.. 숫자 뿐만이 아니고..
N/A 등 문자도 들어가야해서요..

by 마농 [2012.03.13 16:03:47]

질문을 봐서는 세자리 구분 컴마가 필요한건지는 확실하지 않네요?
컴마를 넣을지 뺄지는 알아서 판단하시고요...
RTRIM(TO_CHAR(숫자, 'fm999,990.99'), '.')

by 손님 [2012.03.13 16:35:29]

질문자입니다.

마농님!!!!
감사합니다!!!!

insert 후에 복잡하게 또 컬럼별로 update해주던 귀찮은 일이 훅 없어졌네요..
RTRIM이 단순히 오른쪽 빈칸을 없애주는 기능만 있는게 아니었군요..

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