Додавання початкового нуля до деяких значень у стовпці в MySQL


75

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

Я вже перетворив поле на varchar. Тепер мені потрібно зробити це:

У мене це зараз:

12345678
1234567

Мені потрібно мати це:

12345678
01234567

Відповіді:


169

Поверніть поле назад на числове і використовуйте, ZEROFILLщоб зберегти нулі

або

використання LPAD()

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

OP, мабуть, змінив кар’єру. Можливо, це сантехнік, або пекар, або бондар. Я посилався на вашу відповідь тут stackoverflow.com/q/25997177 btw;)
Funk Forty Niner

Так, оскільки він насправді відповів на питання. ОП, здається, не надто турбував використання Google.
Funk Forty Niner

28

Можливо:

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

Відредаговано у відповідь на запитання mylesg, у коментарях нижче:

гаразд, схоже, вносить зміни у запит - але як я можу змусити його постійно прилипати (змінювати) у таблиці? Я спробував 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');

Тоді це повинно зберегти перші нулі; зворотний бік полягає в тому, що стовпець вже не є строго числовим типом; тож, можливо, вам доведеться застосувати більш суворе підтвердження (залежно від вашого випадку використання), щоб переконатися, що нечислові цифри не вводяться до цього стовпця.

Список літератури:


гаразд, схоже, вносить зміни у запит - але як я можу змусити його постійно прилипати (змінювати) у таблиці? Я спробував UPDATE замість SELECT.
mpg

3

У мене була подібна проблема при імпорті даних телефонного номера з Excel у базу даних MySQL. Отже, простий фокус без необхідності визначати довжину телефонного номера (оскільки довжина телефонних номерів змінювалася в моїх даних):

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

Я щойно набрав 0 перед phone_num.


2
ні, тому що залежно від налаштувань і типу поля (char), у вас може виникнути помилка 1406: "Дані занадто довгі для стовпця ..."
Сіріл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.