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

Есть ли эквивалент MySQL sprintf?

У меня есть поле INT в моей таблице, которое я хотел бы выбрать как нулевую строку. Так, например, 8 выйдет как 008, 23 как 023 и так далее. Возможно ли это в запросе MySQL?

4b9b3361

Ответ 1

Вы ищете функцию LPAD:

SELECT LPAD(23, 3, '0'); -- '023'

Edit:

Как указано @Brad в комментариях, вы также можете определить столбец с ZEROFILL:

`foo` INT(3) ZEROFILL

Это всегда приводило бы к по меньшей мере 3-значным номерам (это означало бы, что цифры с нулевым числом меньше 3-х цифр, а не больше). Это полезно, если вам всегда нужны номера, которые выходят так (И не только в одном запросе)...

Ответ 3

Если вы хотите достичь минимального количества отступов, не сокращая результаты больших чисел, вам нужно будет использовать оператор IF.

В приведенном ниже примере убедитесь, что все идентификаторы имеют минимум три цифры, в то время как большие идентификаторы по-прежнему проходят через необработанные.

SELECT IF(id < 100, LPAD(id, 3, 0), id)