Ответ 1
Измените поле на числовое и используйте ZEROFILL
, чтобы сохранить нули
или
использовать LPAD()
SELECT LPAD('1234567', 8, '0');
У меня есть файл csv, отправленный мне в csv. Интересующая область - 8 цифр. Некоторые из них начинались с 0. Поле было отправлено числовым. Итак, теперь я сбросил несколько ведущих нулей.
Я уже преобразовал поле в varchar. Теперь я должен сделать это:
У меня есть это сейчас:
12345678
1234567
Мне нужно иметь это:
12345678
01234567
Я использую mysql.
Спасибо
Измените поле на числовое и используйте ZEROFILL
, чтобы сохранить нули
или
использовать LPAD()
SELECT LPAD('1234567', 8, '0');
Возможно:
select lpad(column, 8, 0) from table;
Отредактировано в ответ на вопрос от mylesg в комментариях ниже:
ok, похоже, делает изменение в запросе, но как заставить его вставлять (изменять его) постоянно в таблице? Я попробовал UPDATE вместо 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');
Таким образом, это должно сохранить начальные нули; нижняя сторона - это то, что столбец больше не является числовым типом; поэтому вам может потребоваться более строгая проверка (в зависимости от вашего случая использования), чтобы гарантировать, что в этот столбец не будут введены цифры.
Литература: