[Mysql] Ajout d'un caractere "0" sur toutes les valeurs d'un champs

Ajout d'un caractere "0" sur toutes les valeurs d'un champs [Mysql] - SQL/NoSQL - Programmation

Marsh Posté le 19-05-2009 à 09:40:39    

Salut a tous,
 
 
J'ai récuperer une base de donné, (id,codepostal,commune) de france afin de créer un menu ou l'on commence par choisir le département.
 
Jusque la pas de souci,
 
Seulement, tous les code postaux qui devrais commencer par 0, donc de l'ain, les hautes alpes, etc commence directement par leurs premier chiffre, donc 1000 pour l'ain, et 5000 pour les alpes de hautes provence.
 
Ce que j'aimerais faire, c'est de rajouter ce 0 a tous les champs qu'il manque. Je pense que cela doit etre faisable directement dans phpmyadmin, mais j'en ai aucun idée du comment.
 
J'avais penser faire un script php du genre (en ayant isoler au prealable les departements en question dans une autre base)

Code :
  1. $sql = "SELECT id, codePostal FROM localisation";
  2. $req = mysql_query($sql) or die(.mysql_error())
  3. while ($data = mysql_fetch_array($req))
  4. {
  5.          $sql2 = "UPDATE localisation SET codePostal = "0"$data['codePostal'] WHERE id = $data['id']"
  6.          $req2 = mysql_query($sql2) or die(.mysql_error())
  7. }


J'ai pas trop osé lancer ce script, étant donné qu'il doit y avoir bien 5000 commune en comptant tous les département de 1 a 9.  
 
 
Donc, si vous pourriez m'indiquer si cette double requetes fonctionne, ou si vous aviez plus simple directement dans phpmyadmin.
 
Merci

Reply

Marsh Posté le 19-05-2009 à 09:40:39   

Reply

Marsh Posté le 19-05-2009 à 09:49:50    

ta colonne code postal est de quel type ?


---------------

Reply

Marsh Posté le 19-05-2009 à 11:08:33    

Elle est de type "int()"

Reply

Marsh Posté le 19-05-2009 à 11:12:42    

alors tu ne peux pas ajouter un zero devant  
 
pour cela , il faut que ta colonne soit de type varchar par exemple , poru que ton code postal soit un texte  
 
le plus simple est que tu modifie, lors de l'affichage pour ajouter un 0 si ton code postal est inférieur a 10000


---------------

Reply

Marsh Posté le 19-05-2009 à 12:26:49    

a mince.
 
Le problème c'est que je fais une requete avec la fonction SUBSTRING(codePostal, 1, 2)  pour frabriquer les codes des départements a partir des codePostaux. Donc impossible d'utiliser une modification juste a l'affichage.
 
Sinon, ce n'est pas grave, je peu modifier mon type de champs et le passer en Varchar.
 
Donc dans le cas ou il serai en varchar, quelle manip me permettrer de rajouter un 0 devant mes champs ?
 
Merci encore ;)

Reply

Marsh Posté le 19-05-2009 à 14:15:28    

si ta colonne est une int, alors le departement, ca va etre  codePostal/1000, tout simplement

 

et lors de l'affichage, tu ajoute le 0

 

edit si tu passe en var char, tu peux faire un truc
UPDATE table set codePostal = CONCAT(0,codePostal) WHERE LENGTH(codePostal) =4

 



Message édité par flo850 le 19-05-2009 à 14:17:03

---------------

Reply

Marsh Posté le 19-05-2009 à 19:10:19    

Merci beaucoup tu est un CHEF !!
 
J'ai passer mon champs en VARCHAR, et la requete est passé nikel
 
et dire que j'ai tous essayer, meme avec l'import dans Mysql, avec excel, open office, Grrrrrrrrrrr
 
Mais apparement un chiffre ne peut commencer par "0", j'ai vraiment aps l'esprit matheu ^^
 
 
Merci encore, tu m'a economisé beaucoup de temps et de stress !


Message édité par kontas le 19-05-2009 à 19:10:48
Reply

Marsh Posté le 19-05-2009 à 19:14:53    

c'est plutot que pour un nombre 0566 = 566
bonne continuation


---------------

Reply

Marsh Posté le 19-05-2009 à 19:42:01    

Ben pour moi non ^^, c'est bien ce que je dis, je ne suis vraiment pas matheu ^^
 
Sinon, il y'a t'il une incidance sur la rapidité des traitements des données, si elles sont passé de INT a VACHAR ?
 
Si c'est une histoire comme quoi on ne peut pas utiliser tel ou tel fonction sur des champs de type varchar, je ne pense pas que cela m'affecte beaucoup, puisque ce sont des données qui ne bougeront pas.


Message édité par kontas le 19-05-2009 à 19:42:31
Reply

Marsh Posté le 19-05-2009 à 21:37:01    

rien de notable , a moins que tu ne fasse souvent des additions de code postaux :o


---------------

Reply

Marsh Posté le 19-05-2009 à 21:37:01   

Reply

Marsh Posté le 19-05-2009 à 22:41:35    

ouai ^^, pas sur que cela soit vraiment utile ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed