为什么Oracle的to_char()函数会添加空格?

Igo*_*cic 55 oracle

为什么Oracle的to_char()功能会增加空间?

select length('012'), 
       length(to_char('012')), 
       length(to_char('12', '000')) 
  from dual;
Run Code Online (Sandbox Code Playgroud)

3, 3, 4

Ton*_*ews 116

额外的领先空间是潜在的减号.要删除空间,您可以使用以下格式的FM:

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

TO_C
----
012
Run Code Online (Sandbox Code Playgroud)

顺便说一句,请注意to_char采用NUMBER参数; to_char('012')隐式转换为to_char(to_number('012'))= to_char(12)

  • 只是为了澄清:`to_char(-12,'FM00')`会导致`-12`而不是(人们可能会害怕)`12`或`##` (6认同)

Jam*_*ran 31

为了更清楚地给出答案:

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


[ 012]                      [-012]                       [012]  
Run Code Online (Sandbox Code Playgroud)


stj*_*roe 26

您使用的格式掩码是固定宽度,允许使用减号