Подтвердить что ты не робот

Почему Oracle to_char() добавляет пробелы?

Почему Oracle to_char() добавляет пробелы?

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

3, 3, 4

4b9b3361

Ответ 1

Маска формата, которую вы используете, имеет фиксированную ширину и позволяет использовать знак минус

Ответ 2

Дополнительное ведущее пространство для знака минус минус. Чтобы удалить пространство, вы можете использовать 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)

Ответ 3

Чтобы сделать ответы более ясными:

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


[ 012]                      [-012]                       [012]