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.