IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

rajouter un zero devant les champs à 4 caracteres


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 65
    Points : 50
    Points
    50
    Par défaut rajouter un zero devant les champs à 4 caracteres
    Bonjour,

    Je dispose d'un base de donnee que je gere avec phpmyadmin.

    J'ai rempli ma table avec en important un fichier texte contenant les requetes

    CREATE TABLE code_postaux2 (
    cp varchar(5) NOT NULL default '0',
    commune varchar(100) NOT NULL default '',...

    INSERT INTO code_postaux2 VALUES (56789, 'nomdeville'...
    INSERT INTO code_postaux2 VALUES (01234, 'nomdeville'...

    Ensuite je regarde le contenu de ma table et le code postal est 1234 au lieu de 01234!! le zero du debut n'est pas pris en compte, jai pourtant essayé avec varchar et int !! En modifiant un par un les codes p à la main avec phpmyadmin ca marche...mais jai bcp bcp de ligne (ville avec code postal a 4 chiffre) dans ma table.

    Comment faire pour ajouter un zéro devant chaque code postal qui n'a que 4 chiffres sans modifier ceux a 5 chiffres ?
    (peut etre en creant une requete de modification ?)

    Merci d'avance

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    euh, si ta colonne est de type varchar, ceci ne doit pas t'effacer le 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO code_postaux2 VALUES ('01234', 'nomdeville'...
    sinon en effet tu fais une requete de modif avec pour critere de recherche pour les modif une longueur de 4 (lenght? je ne suis plus sur)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Points : 53
    Points
    53
    Par défaut
    Il y a une fonction lenght en mysql
    http://dev.mysql.com/doc/refman/5.0/...on_char-length

    ca devrait donner une requête du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE code_postaux2 SET cp = '0' + cp WHERE CHAR_LENGTH(cp) = 4;

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 65
    Points : 50
    Points
    50
    Par défaut SUITE
    Re,
    Ma colone est bien de type varchar (5) , devrai-je passer en int (5) ???
    (rappel j'ai inserer les cp comme ceci '01234')


    Merci à vous 2, c'est à cette une requete ds ce genre que je pensais mais voila le résultat :

    Nombre d'enregistrements affectés : 0
    requête SQL :
    UPDATE code_postaux2 SET cp = '0' + cp WHERE CHAR_LENGTH(cp) = 4

    Il ne trouve pe etre pas de cp avec 4 car il les considere tous avec 5 car je les ai rentré avec 5 charactere ?non ?

    Si vous avez des d'autres idees ou conseils n'hesitez pas, je verifie svt mon post.

  5. #5
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Peut-être en updatant ta colonne avec la fonction lpad :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE CODE_POSTAUX2
    SET CP = LPAD(CP, 5, '0');
    Ton champ doit bien être un varchar(5).
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 65
    Points : 50
    Points
    50
    Par défaut solution

    merci nounetmasque mais j'ai trouver la solution avant de tester la tienne qui est peut etre tout aussi correcte.

    voici la requete a utiliser :

    UPDATE code_postaux2
    SET cp=CONCAT('0',cp)
    WHERE CHAR_LENGTH(cp)=4;


    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/08/2010, 00h01
  2. rechercher les champs avec n caracteres
    Par serna dans le forum Débuter
    Réponses: 4
    Dernier message: 08/07/2010, 11h11
  3. requete ajout caractere sur tous les champs d'une table
    Par lorenzo74 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 24/06/2006, 13h34
  4. [MySQL] Recuperer les deux premiers caracteres d'un champ
    Par Msieurduss dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/06/2006, 14h40
  5. mettre des Zero a tous les champ null d'un coup
    Par LesLemmings dans le forum Access
    Réponses: 3
    Dernier message: 14/06/2006, 09h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo