{MYSQL} : Requête LIKE

Martine aux WC -  
 le père -
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
Configuration: Windows XP
Firefox 3.0.13

6 réponses

  1. HostOfSeraphim Messages postés 7340 Statut Contributeur 1 609
     
    Essaye ça :

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

    0
  2. Martine aux WC
     
    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
  3. moiced59 Messages postés 1161 Statut Membre 60
     
    Pourquoi ne met tu pas :

    SELECT * FROM matable WHERE code_postal = [tape_ton_numero_voulu]
    0
  4. A.Nonymous
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Martine aux WC
     
    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
  7. le père
     
    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