Страница 1 из 1

Нужны несколько нулей перед числом в MySQL формуле

Добавлено: 16 янв 2019, 00:51
alcompstudio
Добрый день!

Стоит задача сделать некую шаблонную нумерацию, используя нули перед порядковым номером. Номер документа должен быть такой "конструкции": 000001, при этом, если порядковый номер набирает уже 2-значное число, то должно отображаться 000010, т.е. общее количество "числовых" символов с учетом нулей перед порядковым номером не должно меняться (как в данном примере - должно быть 6 символов, не больше - не меньше). В итоге должна получиться некая "маска" нумерации, которая не будет менять итоговое кол-во символов.

Для этого пытался использовать выражение:

Код: Выделить всё

case  
   when [416] <10 then '00000'
   when [416] >=10 AND [416]<100 then '0000'
   when [416] >=100 AND [416]<1000 then '000'
   when [416] >=1000 AND [416]<10000 then '00'
   when [416] >=10000 AND [416]<100000 then '0'
   when [416] >=100000 then ''
end
[416] - это ID поля с типом Автоинкремент (он в формуле используется только для вычисления количества символов - напр, если число больше 9, то уже будет 2 символа, больше 99 - 3 символа, в общем на основе этого строил формулу), чтобы далее к "нулям" подставлялся порядковый номер и таким образом формировался шаблон нумерации (это планирую делать уже в поле Статический текст по шаблону).

также пытался "вставлять" функцию объединения строк CONCAT('00000'), но я не силен в MySQL, в итоге в поле выводится просто "0". Я так понимаю, система если видит число (тем более ноль), то все равно в виде числа его представляет?

Как можно решить данный вопрос?

Re: Нужны несколько нулей перед числом в MySQL формуле

Добавлено: 16 янв 2019, 01:28
Евгений
Как вариант - вместо статического текста по шаблону, использовать поле типа "MySQL формула".

В настройках поля задать формулу

Код: Выделить всё

concat( '№', lpad([123], 6, '0') )
где [123] - ИД вашего автоинкрементного поля.

В нумерации появится первый символ "№", без него числовое поле будет обрезать лидирующие нули.

Re: Нужны несколько нулей перед числом в MySQL формуле

Добавлено: 16 янв 2019, 01:36
alcompstudio
Евгений, спасибо вам за быстрый ответ, я тоже уже "нагуглил" подобное в сети, в принципе понял, что нужен хотя бы один текстовый символ, чтобы не обрезались нули )

Re: Нужны несколько нулей перед числом в MySQL формуле

Добавлено: 16 янв 2019, 01:42
alcompstudio
Как вариант - вместо статического текста по шаблону, использовать поле типа "MySQL формула".
Тут у меня просто данное поле будет заголовком, а формульное поле нельзя сделать заголовком, поэтому все равно придется дублировать в статический текст, т.к. возможно нужно будет по нему искать записи.

Re: Нужны несколько нулей перед числом в MySQL формуле

Добавлено: 16 янв 2019, 07:04
Евгений
Тогда может быть попросить разработчика, чтобы в следующих версиях он сделал расширенный синтаксис шаблонов? Чтобы для подставляемого поля [NNN] также указывать маску наподобие такого [123:'#####9'], либо разрешить в поле по шаблону использовать вызов функции {}.

Думаю будет востребовано.

Re: Нужны несколько нулей перед числом в MySQL формуле

Добавлено: 16 янв 2019, 12:42
alcompstudio
Тогда может быть попросить разработчика, чтобы в следующих версиях он сделал расширенный синтаксис шаблонов? Чтобы для подставляемого поля [NNN] также указывать маску наподобие такого [123:'#####9'], либо разрешить в поле по шаблону использовать вызов функции {}.
Поддерживаю, нужная вещь, было бы неплохо.

Re: Нужны несколько нулей перед числом в MySQL формуле

Добавлено: 25 сен 2021, 17:59
nruslan2
Теперь если нужны нули и автоматическая вставка то можно не MySQL формулу или PHP свой пилить, а прост воспользоваться доработкой 85. viewtopic.php?p=21709#p21709