Заполнение начала поля mysql INT нулями

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

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

2 ответов


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

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

для восстановления данных в формате 3-значного числа


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

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