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

Langage SQL Discussion :

LIKE avec Regexp


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut LIKE avec Regexp
    Bonjour,

    Je cherche à faire une requête SELECT dans une table avec un champ mediumtext dans lequel se trouve de nombreuses villes et codes postaux. L'idée est de récupérer un code postal dans un formulaire, et de tester les entrées dont le champ mediumtext comporte au moins un code postal ayant les deux premiers chiffres identiques (code postal du même département).

    Je ne suis pas un cador en sql donc si quelqu'un peut m'expliquer gentiment comment faire...
    Au départ j'ai écrit SELECT title, zone, email FROM table_content WHERE zone LIKE '%35400%'
    Cela fonctionne, mais j'aimerai que ça marche même si le contenu du champ n'a que "35000". Donc j'ai l'idée d'utiliser une expression régulière, mais là je sèche...

    Merci à ceux qui auront le temps de se poser sur ma question.

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    N'est-ce pas un truc du genre ?


  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut j'ai trouvé
    Bonjour vermine et merci de ton aide

    non la proposition WHERE zone LIKE '%35???%' ne fonctionne pas. Mais en testant plusieurs trucs, je suis tombé sur la solution, que j'explique ici si jamais d'autres cherchent :

    tout d'abord, en récupérant le code postal par formulaire, je garde seulement les 2 premiers chiffres : $departement = substr($codepostal,0,2);

    ensuite, la requête permettant de trouver si des codes postaux faisant partie du même département sont présents dans une chaine :
    SELECT * FROM table_content WHERE zone REGEXP '(".$departement."[0-9]{3})'

    (donc si on cherche les codes postaux dans le département d'ille et vilaine, cela donnera SELECT * FROM table_content WHERE zone REGEXP '(35[0-9]{3})'

  4. #4
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Han d'accord.
    Par contre je me demande si ma version n'était pas plutôt :

    Bref, tant que vous ayez ce que vous désirez, c'est le principal.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    Ah effectivement, avec '%35___%', ça fonctionne j'ai un résultat. Mais par contre, j'ai même trop de résultats, parceque ça ne se limite pas aux 2 premiers chiffres du département : par exemple, ça prend 59350, 51350, etc...

    Mais merci pour l'info, ça me servira un de ces 4

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 462
    Par défaut
    Bonjour,
    D'après ce que tu expliques, le masque de recherche doit être "35___", et non "%35___%", sinon tu cherches tout ce qui contient 35 suivant de 3 caractères, suivent d'un nombre quelconque de caractères.

    Tatayo.

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

Discussions similaires

  1. Vérification de formulaire avec regexp
    Par Shadow aok dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/08/2007, 11h57
  2. Besoin d'aide avec Regexp::Assemble
    Par mobscene dans le forum Modules
    Réponses: 5
    Dernier message: 11/04/2007, 12h39
  3. Besoin d'aide avec regexp
    Par goblin dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2005, 04h27
  4. requette select like avec un caractere de moins
    Par firejocker dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/10/2005, 09h01
  5. utilisation de "LIKE" avec un type datetime dans r
    Par ericmart dans le forum Langage SQL
    Réponses: 8
    Dernier message: 06/11/2003, 14h58

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