본문 바로가기

아이티/oracle&DB

오라클 (Oracle) 에서 소수점처리 어떻게 하지?

select to_char(num, 'fm999,999,999,999,999,999.9999') from daul;
여기서 문제가 DB에 123,456,789.000으로 들어오면 결과가
123,456,789.
이렇다.

즉 포맷'9'는 없으면 공백으로 처리하기에 0으로 표시하는 '0' 포맷을 지정해 줘야한다.
select to_char(num, 'fm999,999,999,999,999,990.0000') from daul;
그러면~   123,456,789.0000  잘 나온다.
^^아래는 부가설명이군.



출처 : http://blog.daum.net/schlafer/40
         http://devday.tistory.com/1727


-- 소수점 둘째자리로 반올림.
SQL> SELECT ROUND(57.126, 2) "결과" FROM DUAL;

결과      
-----------
      57.13

 -- 소수점 둘째자리 이후로 버림.
SQL> SELECT TRUNC(57.126, 2) "결과" FROM DUAL;

결과      
-----------
      57.12

 -- 소수점 둘째자리로 올림.
-- 직접 사용할 수 있는 함수는 없으며, 아래 두가지 예와 같이 응용하여 처리
SQL> SELECT TRUNC(57.123 + 0.009, 2) "결과" FROM DUAL;

결과      
-----------
      57.13

 SQL> SELECT ROUND(57.123 + 0.004, 2 ) "결과" FROM DUAL;

결과      
-----------
      57.13

 -- 정수 57을 57.00 과 같이 표시하기
SQL> SELECT TO_CHAR(57, 'FM90.00') "결과" FROM DUAL;

결과 
------
57.00

 * 추가설명

- 'FM90.00' 에서 '9'는 해당 자리수에 해당되는 숫자(여기선 '5')가 있는 경우에는 해당 숫자를 표시하고, 없는 경우에는 공백으로 표시한다.

- 'FM90.99' 에서 '0'는 해당 자리수에 해당되는 숫자(여기선 '7')가 있는 경우에는 해당 숫자를 표시하고, 없는 경우에는 '0'으로 표시한다.
- 'FM90.99' 에서 'FM'는 결과값의 좌우에 있는 공백을 제거한다.


# TO_CHAR()의 'FM90.0'의 의미

쿼리 내에 다음과 같은 부분이 있다고 하자.

 TO_CHAR(something, 'FM90.0')

'FM90.0'의 의미는 다음과 같다.

'9'는 해당 자리 숫자를 의미하고, 없을 경우 공백으로 표시.

'0'은 해당 자리 숫자를 의미하고, 없을 경우 '0'으로 표시.

'FM'은 좌우 공백 제거.