{MYSQL} : Requête LIKE

Fermé
Martine aux WC - 16 oct. 2009 à 16:45
 le père - 20 oct. 2009 à 14:17
Bonjour,

Voilà je voudrais avoir vos lumières sur la requêtes LIKE.
(je travaille sous Struts)
Je voudrais dans une bdd electionné toutes les villes dont le code postal commence par l'id du département

Tout marche nickel sauf pour les chiffres de 1 à 9.

ma requête :
SELECT * FROM matable WHERE code_postal LIKE #value#

(value étant l'identifiant du département)

donc si je clique sur département 75, on me retourne bien les codes postaux commencant par 75.

Cependant quand je clique sur le département 1, il me retourne les départements qui commencent par un 1.(logique en fait)

Le type de valeur du code était des integer.
Donc j'ai changé par un varchar. j'ai renseigné mes codes départements par 01-02...09.
Cependant la requête renvoi tjr pareil bien que le paramètre soit 01.

Pouvez vous m'aider ?

Merci d'avance

6 réponses

HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
16 oct. 2009 à 16:49
Essaye ça :

SELECT * FROM matable WHERE code_postal LIKE '#VALUE#*'



0
Martine aux WC
16 oct. 2009 à 16:57
Je viens d'essayer mais ça marche pas.

Ya pas une histoire de format ou de convert ??

ça doit pas être si compliqué de garder ce 0 avant le 1
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
16 oct. 2009 à 19:25
Pourquoi ne met tu pas :

SELECT * FROM matable WHERE code_postal = [tape_ton_numero_voulu]
0
Méthode avec VARCHAR
WHERE cp LIKE '01___'

Méthode avec INTEGER
WHERE cp BETWEEN 1000 AND 1999
ou
WHERE cp >= 1000 AND cp < 2000

Attention cependant, certains codes postaux contiennent des lettres, dont les départements corses.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Martine aux WC
20 oct. 2009 à 12:38
Bien entendu que ça marche si je tape moi même le code postal dans la requête...
Le but est de récupérer les 2 chiffres qui sont sélectionné par l'utilisateur.
#value# est une variable dynamique qui change en fonction des choix de l'utilisateur.
Sa marche nickel à partir du moment où l'id du département (75 pour paris) est supérieur à 10.

donc si l'internaute sélectionne un département 75, la requête exécute :

SELECT * FROM matable WHERE code_postal LIKE '75%'

Et si je choisi le département 03 :
SELECT * FROM matable WHERE code_postal LIKE '3%'

et c'est ça qui le pose problème !

Le paramètre passé est bien 03 mais on ne le retrouve pas dans ma requête
0
Bonjour

Je te suggère de forcer le 0 devant si la chaîne avec le % ne fait que 2 caractères de long:
en PHP; si tu récupères le code dans $code :
$comme= $code . "%"
if (strlen($comme)==2) $comme='0'.$comme;
$requete = "SELECT * FROM matable WHERE code_postal LIKE '$comme'";
0