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

Все вопросы/проблемы по установке и использовании.
Ответить
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1519
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр
Откуда: Мир

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

Сообщение 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". Я так понимаю, система если видит число (тем более ноль), то все равно в виде числа его представляет?

Как можно решить данный вопрос?
Аватара пользователя
Евгений
Сообщения: 398
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

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

Сообщение Евгений »

Как вариант - вместо статического текста по шаблону, использовать поле типа "MySQL формула".

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

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

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

В нумерации появится первый символ "№", без него числовое поле будет обрезать лидирующие нули.
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1519
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр
Откуда: Мир

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

Сообщение alcompstudio »

Евгений, спасибо вам за быстрый ответ, я тоже уже "нагуглил" подобное в сети, в принципе понял, что нужен хотя бы один текстовый символ, чтобы не обрезались нули )
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1519
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр
Откуда: Мир

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

Сообщение alcompstudio »

Как вариант - вместо статического текста по шаблону, использовать поле типа "MySQL формула".
Тут у меня просто данное поле будет заголовком, а формульное поле нельзя сделать заголовком, поэтому все равно придется дублировать в статический текст, т.к. возможно нужно будет по нему искать записи.
Аватара пользователя
Евгений
Сообщения: 398
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

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

Сообщение Евгений »

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

Думаю будет востребовано.
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1519
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр
Откуда: Мир

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

Сообщение alcompstudio »

Тогда может быть попросить разработчика, чтобы в следующих версиях он сделал расширенный синтаксис шаблонов? Чтобы для подставляемого поля [NNN] также указывать маску наподобие такого [123:'#####9'], либо разрешить в поле по шаблону использовать вызов функции {}.
Поддерживаю, нужная вещь, было бы неплохо.
nruslan2
Сообщения: 2435
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow

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

Сообщение nruslan2 »

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