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.
'Server Oriented > DB-Oracle' 카테고리의 다른 글
Toad 토드, Function/Job/Procedure/Trigger 추출 (1) | 2020.05.29 |
---|---|
경품 추첨 DB 로직 (1) | 2019.10.24 |
하나의 트랜잭션 안에서 sysdate 가 다른 값이 세팅될 수 있다..? (0) | 2017.10.09 |
스크레치 복권 발급과 관련된 단상 (0) | 2017.09.25 |
윤년 추출 (0) | 2017.08.17 |