본문 바로가기

Server Oriented/DB-Oracle

to_char(숫자,'fm90.0') 오라클 형식

to_char(숫자,Formatter) 함수에서,

9 는 숫자를 표시하되 값이 없으면 null 처리,

0 은 숫자를 표시하되 값이 없으면 0 처리,

fm 은 trim() 을 to_char() 밖에 한 번 더 씌워주는 효과.



to_char(5.2, '9.9') 는 '5.2' 를 출력. to_char(5.2, '0.0') 을 해도 '5.2' 라고 출력.


그러면, to_char(5.2, '9') 라고 하면 어떻게 찍힐까..? '5' 만 찍힘. to_char(5.2, '0') 도 '5'.

to_char(5.5, '9') 라고 하면..? 5.5 의 반올림으로 표시하려 하므로, '6' 이라고 찍힘. to_char(5.5,'0') 도 '5'.

Formmater 에서 설정된 소숫점 이하 마지막 자리에서 그 위로 반올림 하는 것.


to_char(5,'9.9') 는 '5.0' 을 출력. '9.9' 의 두번째 '9' 에 해당하는 '5' 의 값이 없어도 소숫점 이하는,

 '.' 를 표시하기 위해 '.' 뒤에 '0' 을 찍음.

to_char(5,'9.0') 은 


그런데, to_char(55, '9.0') 이라 하면 '#####' 이라고 출력됨. 출력하기 어렵다는 얘기.

9.0 으로는 55 라는 2자리 숫자를 표시할 수 없다는 것.

따라서, 실제 값 보다 Formatter 가 훨씬 크게 세팅될 필요가 있으며.

이를테면, 1,563,000 를 출력하려면.. to_char(1563000,'9,999,999') 보다는 to_char(1563000,'99,999,999') 와 같이 좀더 크게 세팅.


그리고 이렇게 formatter 보다 작은 수치가 세팅되면 빈 공간이 생기는데 이를 피하려고 trim(to_char(...,...')) 하지 말고.. fm 을 사용.

to_char(1234,'fm9,999,999') 와 같이 하면 됨. trim(to_char(1234,'9,999,999')) 와 같은데 좀더 코딩량이 적음.


.Fine.