нежелательный пробел в формате числа оракула - PullRequest
17 голосов
/ 01 октября 2008

Мне нужно дополнить номера начальными нулями (всего 8 цифр) для отображения. Я использую оракула. ​​

select to_char(1011,'00000000') OPE_NO from dual;
select length(to_char(1011,'00000000')) OPE_NO from dual;

Вместо '00001011' я получаю '00001011'. Почему я получаю дополнительный ведущий пробел? Какая правильная строка форматирования чисел для этого?

P.S. Я понимаю, что могу просто использовать trim(), но я хочу лучше понять форматирование чисел.

@ Эдди: я уже прочитал документацию. И все же я до сих пор не понимаю, как избавиться от ведущих пробелов.

@ Дэвид: Значит ли это, что нет другого пути, кроме как использовать trim()?

Ответы [ 2 ]

31 голосов
/ 01 октября 2008

Использовать FM (режим заполнения), например,

select to_char(1011,'FM00000000') OPE_NO from dual;

6 голосов
/ 01 октября 2008

Из той же документации , упомянутой EddieAwad :

Отрицательные возвращаемые значения автоматически содержат ведущий отрицательный знак и положительные значения автоматически содержат ведущий пробел, если формат модель содержит формат MI, S или PR элемент.


РЕДАКТИРОВАТЬ : правильный способ - использовать модификатор FM, как ответил Стив Босман. Прочитайте раздел о Модификаторы модели формата для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...