꿈꾸는 개발자, DBA 커뮤니티 oracleclub.com
티베로강좌  :  큐브리드강좌  :  오라클강좌  :  오라클팁  :  오라클사용자팁  :  Oracle Blogs  :  오라클Q&A  :  오라클자료실  :  IT컬럼/소식  :  좋은글감동  :  방명록
Searched by NAVER
DB검색 :
모두펼치기 | 모두닫기

Oracle 질문과 답변 oracleclub.com
VARCHAR2 형의 소수점 처리 관련.
carrera : 2009-07-01 14:39  

잘 안되는게 있어서 문의 드립니다.

a 라는 필드는 varchar2 형으로 되어 있습니다.

a 라는 필드에는 숫자와 문자가 같이 자료가 있습니다.

이것중에 문자는 그대로 출력을 하고 숫자는 소수점을 찍어 줄려고합니다.

물론 코드단에서 처리 하면 좋겠지만 그렇게 안 되게 되었습니다.

그래서 DB  단에서 처리를 해 줘야 합니다.

대충 변환을 하는 코드를 짜 봤는데 토드에서는 돌아가는데 asp 페이지에서는 에러가 납니다.

to_char(decode(trunc(to_number(decode(a, 'ND', 99999, 'BD', 99998, a)), 1), 99999, 'ND', 99998, 'BD', trunc(to_number(decode(a, 'ND', 0, 'BD', 0, a)), 1)),'9990.0')

으로 코드를 짰는데 코드도 길고 알아 보지도 못할 정도로 길고 에러가 납니다.

위 코드의 해석은 a 필드에 값이 ND이면 99999 로 변환을 하고 BD는 99998로 변환을 합니다.(a 라는 필드의 값이

절때 99999, 99998 이 될 수 없기때문에 그렇게 임시로 변환을 한것입니다.)

그리고 숫자는 소수점 첫째 자리까지 자르고요. 그러면 모든 숫자는 소수점 표시가 되겠죠..

ND, BD 값은 그대로 찍어줘야 하기에 99999, 99998 로 변환한 것은 다시 ND, BD 로 바꾸어 줍니다.

그렇게 해서 테스트를 하닌까 소수점 변환이 안되어 있는 것도 있고 소수점 앞의 정수가 짤리는 경우도 있어서

TO_CHAR 로 포맷 을 줬습니다. 에러가 나네요.

물론 위 코드대로 찍으면 ASP 페이지에서 ORA-01722: invalid number 에러가 뜹니다.

토드에서는 돌아가는데 ASP 페이지에서는 안 돌아갑니다. --- 물론 안 되는게 맞겠죠..

코드도 잘 모르겠고 해서 고수님들의 답변 기다립니다.

위의 것은 0 은 0.0 으로 찍히도록 되어 있습니다.

0은 0으로 찍고 싶고 42.195는 42.1 로 찍히게 하고 싶습니다.

물론 문자는 문자 그대로 찍히고요..

다시 정리하자면 a 라는 필드에는 값이 문자, 숫자가 다 존재합니다.

그 중에서 문자는 그대로 출력하고 숫자를 소수점 첫째자리까지만 찍고 싶습니다.(지금 데이터가 소수점 둘째자리 이렇게도 있기 때문입니다.)

숫자는 소수점 첫째자리까지만 찍게 하고 싶고 0은 0으로 출력하고 싶습니다.(꼭 해야 하는 건 아닙니다.)

고수님들의 답변 좀 부탁 드리겠습니다.

조회수 301,  추천수 0
등록 글답변 글수정 목록보기
이름 쓰기
비밀번호
도움 주시는 곳
oraclejava