Добавление ведущего нуля к некоторым значениям в столбце в MySQL


У меня есть CSV-файл, отправленный мне в CSV. Области интереса составляет 8 цифр. Некоторые из них начинались с 0. Поле было отправлено числовое. Итак, теперь я опустил некоторые ведущие нули.

Я уже преобразовал поле в varchar. Теперь мне нужно сделать это:

у меня есть это:

12345678
1234567

мне нужно вот что:

12345678
01234567
3 55

3 ответа:

измените поле обратно на числовое и используйте ZEROFILL сохранить нули

или

использовать LPAD()

SELECT LPAD('1234567', 8, '0');

возможно:

select lpad(column, 8, 0) from table;

редактировать в ответ на вопрос от mylesg, в комментариях ниже:

ОК, кажется, внести изменения в запрос - но как я могу сделать его придерживаться (изменить его) постоянно в таблице? Я попробовал обновление вместо SELECT

Я предполагаю, что вы использовали запрос, аналогичный:

UPDATE table SET columnName=lpad(nums,8,0);

если это было успешно, но значения в таблице по-прежнему без ведущих нулей, то Я бы предложил вам, вероятно, установить столбец как числовой тип? Если это так, то вам нужно будет изменить таблицу так, чтобы столбец имел тип text/varchar () для сохранения ведущих нулей:

первый:

ALTER TABLE `table` CHANGE `numberColumn` `numberColumn` CHAR(8);

во-вторых, запустите обновление:

UPDATE table SET `numberColumn`=LPAD(`numberColum`, 8, '0');

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

ссылки:

у меня была аналогичная проблема при импорте данных номера телефона из excel в базу данных mysql. Так что простой трюк без необходимости определять длину телефонного номера (потому что длина телефонных номеров варьировалась в моих данных):

UPDATE table SET phone_num = concat('0', phone_num) 

Я только что уступил 0 перед phone_num.