web-dev-qa-db-fra.com

Ajouter un zéro non significatif à certaines valeurs de la colonne dans MySQL

J'ai un fichier CSV qui m'a été envoyé en CSV. Le champ d'intérêt est composé de 8 chiffres. Certains d'entre eux ont commencé avec un 0. Le champ a été envoyé sous forme numérique. Donc, j'ai maintenant laissé tomber certains zéros non significatifs.

J'ai déjà converti le champ en varchar. J'ai maintenant besoin de faire ceci:

J'ai ceci maintenant:

12345678
1234567

J'ai besoin de ça:

12345678
01234567
63
mpg

Remettez le champ en numérique et utilisez ZEROFILL pour conserver les zéros

ou

utiliser LPAD()

SELECT LPAD('1234567', 8, '0');
142
John Conde

Peut-être:

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

Edited en réponse à la question de mylesg, dans les commentaires ci-dessous:

ok, semble faire le changement sur la requête- mais comment puis-je le coller (le changer) de manière permanente dans la table? J'ai essayé un UPDATE au lieu de SELECT

Je suppose que vous avez utilisé une requête similaire à:

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

Si cela réussit, mais que les valeurs de la table sont toujours dépourvues de zéros, alors je vous suggérerais de définir la colonne comme un type numérique? Si tel est le cas, vous devez modifier la table pour que la colonne soit de type text/varchar () afin de conserver les zéros de gauche:

Premier:

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

Deuxièmement, lancez la mise à jour:

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

Cela devrait donc préserver les zéros de tête; l'inconvénient est que la colonne n'est plus strictement de type numérique; vous devrez donc peut-être appliquer une validation plus stricte (en fonction de votre cas d'utilisation) pour vous assurer que les non-chiffres ne sont pas entrés dans cette colonne.

Références:

22
David Thomas

J'ai eu un problème similaire lors de l'importation des données de numéro de téléphone d'Excel vers la base de données mysql. Donc, une simple astuce sans avoir besoin d'identifier la longueur du numéro de téléphone (car la longueur des numéros de téléphone varie dans mes données):

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

Je viens de concéder 0 devant le phone_num.