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 :

Problème chaine de caractère tronquée [MySQL-5.0]


Sujet :

Requêtes MySQL

  1. #1
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Par défaut Problème chaine de caractère tronquée
    Bonjour,

    je me permet de vous demander un peu d'aide. Lorsque j"insère un record dans ma table, j'ai un champ qui reçoit un nombre, de type string, débutant par zéro. Dans la requête INSERT
    la valeur est correct mais lorsqu'elle s’exécute, le zéro non significatif est supprimé dans l'enregistrement de la table.
    Ce champ en question est de type VARCHAR(10).

    Voici la structure du champs en question : MCnoFourni varchar(10) latin1_swedish_ci Non Aucun
    Voici la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     INSERT INTO NCMARC (MCnoFourni)  
    VALUES (0449128509)
    résultat : Modifier Effacer 449128509

    Je vous avoue que je ne comprend pas pourquoi il enlève le zéro de début de chaîne. Si cela avait été de type double, ou autre numérique, je comprendrai mais dans ce cas-ci, je ne voit pas

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    C'est simplement que tu insères une valeur numérique et non une chaine de caractères dans ta table.
    Comme cela, ça devrait bien mieux fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO NCMARC (MCnoFourni)  
    VALUES ('0449128509')
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 923
    Par défaut
    Salut à tous.

    Vous avez deux possibilités, soit stocker votre nombre dans une chaîne de caractères, ou soit le stocker dans un type integer.
    L'astuce que j'utilise dans le type integer, est de présenter le nombre en le formatant avec des zéros avec une présentation sur dix chiffres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
        DEFAULT CHARACTER SET `latin1`
        DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`      integer     unsigned          not null auto_increment primary key,
      `val`     integer(10) unsigned zerofill not null,
      `lib1`    varchar(255)                  not null,
      `lib2`    varchar(255)                  not null
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`val`,`lib1`,`lib2`) values (0449128509, 0449128509, '0449128509')
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+------------+-----------+------------+
    | id | val        | lib1      | lib2       |
    +----+------------+-----------+------------+
    |  1 | 0449128509 | 449128509 | 0449128509 |
    +----+------------+-----------+------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    La vrai question est de savoir ce que vous désirez faire avec ce nombre.
    Si dans tous les cas, c'est un nombre, autant le stocker dans le type integer comme je l'ai fait.

    @+

  4. #4
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    C'est simplement que tu insères une valeur numérique et non une chaine de caractères dans ta table.
    Comme cela, ça devrait bien mieux fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO NCMARC (MCnoFourni)  
    VALUES ('0449128509')
    Merci pour vos explications. L'exemple de al1_24 fait son travail. Et cela me paraît si évident maintenant.
    Merci à vous deux.

    Dharkan

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

Discussions similaires

  1. Probléme chaine de caractéres
    Par kiooik dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 30/07/2008, 16h25
  2. Problème chaine de caractère sous vista
    Par pinguipacman dans le forum Visual C++
    Réponses: 1
    Dernier message: 22/02/2008, 16h34
  3. [Débutant]Problème chaine de caractères
    Par olivier1209 dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 04/05/2007, 10h10
  4. [Format]Problème chaine de caractère
    Par e040098k dans le forum Access
    Réponses: 4
    Dernier message: 16/04/2007, 22h17
  5. problème chaine de caractère
    Par fabpeden dans le forum C
    Réponses: 6
    Dernier message: 26/03/2007, 16h16

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