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

PostgreSQL Discussion :

Insertion d'un nombre dans un champs varchar ?


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Par défaut Insertion d'un nombre dans un champs varchar ?
    Bonjour a tous !

    Voila, j'insère des données (code postaux) dans une champ d'une table décléré en varchar(5) et ceci afin que le 0 qui se trouve devant le code postal 01200 par exemple soit ecrit tel quel dans la table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Insert into grande_ville VALUES (01000, 'BOURG EN BRESSE');
    et Bien mon champ ne contient que "1000" !!!!!

    Je n'y arrive pas. Y a-t-il une regle pour ce genre de choses.
    Le SGBD interprete ca comme une chaine donc normalement il ne sais meme pas que c un chiffre ==> pas de rertait du 0.

    J'avoue trouver ca étrange et je me doute bien que ca vient de moi.

  2. #2
    Membre éclairé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Par défaut
    OK, autant pour moi.

    je faisais cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $reqPOST 		= "Insert into grande_ville VALUES ($cp_ville, '".$ville."');";
    au lieu de faire cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $reqPOST 		= "Insert into grande_ville VALUES ('".$cp_ville."', '".$ville."');";
    ca n'empeche que ca m'intrigue, le fait que meme sans les quotes, il l'interprète comme un chiffre.

    Quelqu'un pourrait m'expliquer, ca pourrait etre important.

    Merci

  3. #3
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Par défaut
    Je viens de faire quelques petits tests avant de formuler ma réponse. Déjà, ce comportement se reproduit dans d'autres SGBDR : j'ai testé à l'instant avec succès avec Sybase ASA, et je pense que souvenir que MySQL accepte ceci. Tout ceci fonctionne aussi en "sens inverse". Essaie d'insérer dans un champ numérique une chaîne de caractères contenant un nombre valide, tu verras qu'il s'exécute sans broncher : "insert into table (id) values ('132')", avec id étant un entier, ne renvoie pas d'erreur.

    Je n'ai pas pris le temps de tester des insertions du genre un timestamp dans un champ date ou un champ time, mais j'imagine que cela fonctionne également. Pour expliquer cela... je pense que les SGBDR sont capables de faire des conversions "évidentes" en réalisant implicitement des CAST.

    Dans ton cas, un integer est détecté (donc les 0 non significatifs sautent) puis transtypé en varchar pour coller avec la définition du champ de la table.

  4. #4
    Membre éclairé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Par défaut
    C'est bien ce que je pensais mais ca me parassait très surprenant que les SGBD performants fassent cela.

    Mais une fois que le développeur connait cette caractéristiques, cela peut aider. Puisqu'il est toujours possible d'insérér la valeur voulue mais il est aussi possible de faire un pseudo transtypage auto sans se prendre la tête.

    Je te remercie ne tout cas.

    Je ferais des tests mais la je suis occupé a autre chose.

    Bonne journée.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/01/2009, 11h15
  2. Insertion d'un CR dans un champs memo
    Par noratec dans le forum IHM
    Réponses: 2
    Dernier message: 12/01/2009, 17h10
  3. Insertion d'un fichier dans un champ blob
    Par malikoo dans le forum PL/SQL
    Réponses: 1
    Dernier message: 05/01/2009, 18h44
  4. Comment insérer un exposant dans un champ varchar ?
    Par Drix78 dans le forum Développement
    Réponses: 1
    Dernier message: 11/08/2008, 18h23
  5. Récupérer un nombre dans un champs texte
    Par mandou36 dans le forum Access
    Réponses: 18
    Dernier message: 05/09/2006, 19h11

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