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

 MySQL Discussion :

MYSQL REGEX, trouver un mot precis


Sujet :

MySQL

  1. #1
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 70
    Points : 64
    Points
    64
    Par défaut MYSQL REGEX, trouver un mot precis
    Bonjour a tous

    J’ai besoin de votre aide sur une requete mysql.
    Je bosse sur un filtre de recherche PHP. Via Post/Get je recupere une variable et j’essaie de trouve un ou plusieurs resultats dans ma bdd.

    En gros j’ai des categories et des sous categories, l’admin peut mettre une ou plusieurs categories et sous-categories lorsqu’il remplis un article.

    Exemple de categories/sous-categories :

    - toto
    — toto-1
    — toto-2
    — toto-2-plus

    - tata
    — tata-1
    — tata-2

    Quand l’admin choisit plusieurs categories, on fait une string en JS et on l’enregistre dans la colonne qui va bien. Ca donne ca :

    « toto,toto-1,tata,tata-2 »

    Je galere a faire des recherches exactes. L’utilisateur en front ne peut choisir qu’une seule categorie ou sous-categorie a la fois, donc il peut choisir « toto » ou « toto-1 » ou « tata » mais pas les trois en meme temps.

    La ou je galere, c’est pour differencier « tata » de « tata-* ». Je suis partie sur une requete avec la commande REGEX.



    SELECT `table`.*
    FROM `table`

    WHERE (categorie REGEXP BINARY "([:comma:]{1}|^)tata([:comma:]{1}|$)")


    Avec cette requete, j’essaie de dire :

    - Soit le mot recherche commence par une virgule
    - Soit le mot recherche est le debut de la string
    Puis
    - Soit le mot recherche est la fin de la string
    - Soit le mot recherche se termine par une virgule


    Pour le moment je ne trouve rien … en attendant, j’ai une autre syntaxe qui fait tourner le truc mais qui ne fait pas la difference en tata et tata-* , c’est nul

    Si vous avez des idees, je suis preneur.

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 905
    Points : 6 693
    Points
    6 693
    Par défaut
    As-tu essayé plus simplement: categorie REGEXP BINARY '(,|^)tata(,|$)' ?

    ou cette syntaxe:categorie REGEXP BINARY '([[.comma.]]|^)tata([[.comma.]]|$)'
    ou encore:categorie REGEXP BINARY '([[.,.]]|^)tata([[.,.]]|$)'

  3. #3
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 70
    Points : 64
    Points
    64
    Par défaut
    Super, j'ai essaye les trois syntaxes et elles fonctionnent toutes les trois.

    Merci pour ton aide CosmoKnacki

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

Discussions similaires

  1. REGEX - Trouver un mot
    Par DotNetMatt dans le forum C#
    Réponses: 4
    Dernier message: 30/07/2012, 14h24
  2. [Regex] Trouver les mots entre certains autres mots
    Par lequebecois79 dans le forum Langage
    Réponses: 0
    Dernier message: 13/02/2012, 20h57
  3. une regex simple : trouver un mot en 6 majuscules
    Par EnRadeSurEclipse dans le forum Requêtes
    Réponses: 6
    Dernier message: 21/05/2010, 15h55
  4. Regex: trouver une chaine et prendre le mot d'aprés
    Par Greg84 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 07/11/2008, 14h41
  5. trouver l'article qui contient un mot precis
    Par cyndhia dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/07/2008, 14h55

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