|
잘 안되는게 있어서 문의 드립니다.
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으로 출력하고 싶습니다.(꼭 해야 하는 건 아닙니다.)
고수님들의 답변 좀 부탁 드리겠습니다.
|