Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2012, 12h21   #1
Nouveau Membre du Club
 
Inscription : mai 2009
Messages : 205
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 205
Points : 27
Points : 27
Par défaut Optimisation du LIKE dans une Requete SQL

Bonjour tout le monde, je souhaiterais faire une recherche dans une base de données.
Le LIKE ne me semble pas suffisamment pertinent pour obtenir les résultats que je recherche.
Je m'explique :
si dans ma base de données, j'ai les lignes suivantes :
- Vert
- Vert pomme
- Rouge
- Rouge Orangée
- Blanc
- Blanc crème

j'aimerais pour une requête vert pomme avoir les résultats suivants :
- vert
- vert pomme
Ce n'est pas le cas avec un LIKE

Avez vous une idée de ce que je pourrais utiliser pour mettre en oeuvre ce genre de requête
maxwel56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 13h47   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 669
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 669
Points : 2 677
Points : 2 677
bonjour,

c'est un like qu'il faut utiliser :

Code :
1
2
 
ma_col LIKE 'vert%'
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 17h14   #3
Membre du Club
 
Homme Frédéric
Inscription : juin 2011
Messages : 54
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 54
Points : 54
Points : 54
Tu devrais essayer ça :

Code :
WHERE "Vert pomme" REGEXP CONCAT('^',macol);
Je pense que ça fonctionne, mais je ne sais pas du tout si c'est la bonne façon de faire.
Fred_34 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/02/2012, 22h36   #4
Membre à l'essai
 
Homme
Inscription : février 2012
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : février 2012
Messages : 17
Points : 23
Points : 23
La réponse de Fred_34 fonctionne. Tu peux également la faire sous forme d'un LIKE :
Code :
WHERE 'vert pomme' LIKE CONCAT(`macol`, '%' )
Le problème est que si tu cherches "vert", tu ne trouveras pas "vert pomme". Tu peux ajouter la condition "opposée" :
Code :
WHERE 'vert' LIKE CONCAT(`macol`, '%') OR `macol` LIKE 'vert%'
Comme ça, si tu cherches "vert" ou "vert pomme", tu trouveras tous les "vert".

Une recherche plus fine pourrait se faire en découpant les termes de la recherche en mots :
Code :
WHERE `macol` LIKE '%vert%' OR `macol` LIKE '%pomme%'
hello29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h41.


 
 
 
 
Partenaires

Hébergement Web