Заполнение начала поля mysql INT нулями - PullRequest
6 голосов
/ 04 марта 2011

У меня есть поле INT в большой базе данных MySQL, содержащей инкрементные числа в поле INT.Эти числа в настоящее время являются обычными числами автоинкремента (1, 2, 3), но мне нужно добавить их до трех цифр с нулями в начале (поэтому я получаю 001, 002, 003 .. 010, 011 и т. Д.).

Какие команды можно запустить в моей базе данных, чтобы изменить этот столбец на нужный мне формат?

Ответы [ 2 ]

16 голосов
/ 04 марта 2011

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

SELECT LPAD(CONVERT(`col`,VARCHAR(3)),3,'0')

для получения данных, отформатированных как трехзначное число

1 голос
/ 04 марта 2011

Нет такой вещи, как наличие нуля в начале данных в числовом поле в базе данных; данные просто хранятся не так, как в римских цифрах. Все, что у вас есть, это номер три; так что если вы хотите вывести строку «003», у вас есть два варианта:

  • Измените использование строкового поля в базе данных: не рекомендуется, потому что вы не можете легко получить увеличивающиеся числа.
  • Отформатируйте число при извлечении его из базы данных, чтобы добавить начальные нули: лучше, но у него есть свои недостатки - например, сравнения будут медленнее, потому что они не проиндексированы.
...