program tip

Oracle의 to_char () 함수가 공백을 추가하는 이유는 무엇입니까?

radiobox 2021. 1. 5. 07:54
반응형

Oracle의 to_char () 함수가 공백을 추가하는 이유는 무엇입니까?


Oracle의 to_char()기능이 공백을 추가하는 이유는 무엇 입니까?

select length('012'), 
       length(to_char('012')), 
       length(to_char('12', '000')) 
  from dual;

3, 3, 4


사용중인 형식 마스크는 고정 너비이며 빼기 기호를 허용합니다.


추가 선행 공백은 잠재적 인 마이너스 기호를위한 것입니다. 공간을 제거하려면 FM을 다음 형식으로 사용할 수 있습니다.

SQL> select to_char(12,'FM000') from dual;

TO_C
----
012

그런데 to_char는 NUMBER 인수를 취합니다. to_char ( '012')는 암시 적으로 to_char (to_number ( '012')) = to_char (12)로 변환됩니다.


주어진 답을 더 명확하게하려면 :

select '['||to_char(12, '000')||']', 
       '['||to_char(-12, '000')||']', 
       '['||to_char(12,'FM000')||']' 
from dual


[ 012]                      [-012]                       [012]  

'fm'구문을 사용할 때 0을 사용하여 지정하지 않는 한 소수점 이하 자릿수 뒤에 값이 포함되지 않습니다. 예를 들면 :

SELECT TO_CHAR(12345, 'fm99,999.00') FROM dual                               

반환 : '12, 345.00 '

SELECT TO_CHAR(12345, 'fm99,999.99') FROM dual                            

반환 : '12, 345. '

보시다시피 소수 자리 뒤에 두 개의 0이 예상되는 경우 문제가 될 수 있습니다 (예 : 수수료 보고서).

참조 URL : https://stackoverflow.com/questions/240182/why-is-oracles-to-char-function-adding-spaces

반응형