为什么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]