Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2005, 14h33   #1
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
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 :
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.
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2005, 14h35   #2
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
OK, autant pour moi.

je faisais cela
Code :
  $reqPOST 		= "Insert into grande_ville VALUES ($cp_ville, '".$ville."');";
au lieu de faire cela
Code :
  $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
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2005, 15h00   #3
Membre habitué
 
Inscription : mai 2002
Messages : 131
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 131
Points : 142
Points : 142
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.
Quentin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2005, 15h17   #4
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
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.
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h38.


 
 
 
 
Partenaires

Hébergement Web