爲什麼Oracle的to_char()
函數添加空格?爲什麼Oracle的to_char()函數添加空格?
select length('012'),
length(to_char('012')),
length(to_char('12', '000'))
from dual;
3, 3, 4
爲什麼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接受一個數字參數; TO_CHAR( '012')被隱式轉換爲TO_CHAR(TO_NUMBER( '012'))= TO_CHAR(12)
要給出更清晰的答案:使用「FM時
select '['||to_char(12, '000')||']',
'['||to_char(-12, '000')||']',
'['||to_char(12,'FM000')||']'
from dual
[ 012] [-012] [012]
注意'語法,它將不包括小數點後面的任何值,除非使用零指定。例如:
SELECT TO_CHAR(12345, 'fm99,999.00') FROM dual
回報:'12,345.00' :'12,345
SELECT TO_CHAR(12345, 'fm99,999.99') FROM dual
返回「。
正如你可以看到這將是一個問題,如果你期望在小數點後兩個零(也許在費用報告例如)。
類似問題http://stackoverflow.com/questions/156329/unwanted-leading-blank-space-on-oracle-number-format有更詳細的解答。 – Vadzim 2015-01-14 13:15:37
Oracle的設計決策永不止步... – MarioDS 2017-11-06 10:13:14