mysql recherche les lettres d'un mot

  • Auteur de la discussion Auteur de la discussion chava2b
  • Date de début Date de début
WRInaute occasionnel
Salut,

J'essaye de faire une recherche dans mysql et je n'ai pas trop d'idées... si qqun peut m'aider, je suis à l'ecoute :)

j'ai un champ(prenom) avec une liste de prenom ou je vais faire la recherche.
si je n'ai pas de resultat, je veux essayer de trouver les prenoms qui contiennent les lettres de ma recherche.

si je recherche les lettres 'jean'

pour le moment je fais
Code:
... where prenom like '%j%' and prenom like '%e%' and prenom like '%a%' and prenom like '%n%' and length(prenom)=4

1- avec des regex ca serait pas plus simple
2- comment avoir que les resultats ne contenant pas d'autres lettres que celle que je recherche


merci
 
WRInaute occasionnel
Tilt, tres bien ton regex, mais il me donne les resultats meme s'il n'y a pas toutes les lettres; pour 'jean' et me donne 'anna' par ex.;

Si je ne trouve pas directement le prenom, je veux essayer de voir s'il n'y a pas 2 lettres interverties, 'jaen' par ex. et recuperer 'jean'

finstreet, en quoi faire une recherche full text (MATCH AGAINST) m'aiderai ?

merci
 
WRInaute accro
Salut chava2b,
Je ne crois pas qu'il existe un possibilité plus simple que celle que tu utilises déjà.
Toutefois quand tu dis "comment avoir que les resultats ne contenant pas d'autres lettres que celle que je recherche" qu'entends-tu par là, il te sort quoi comme prénom ?
 
WRInaute accro
chava2b a dit:
Tilt, tres bien ton regex, mais il me donne les resultats meme s'il n'y a pas toutes les lettres; pour 'jean' et me donne 'anna' par ex.;

Si je ne trouve pas directement le prenom, je veux essayer de voir s'il n'y a pas 2 lettres interverties, 'jaen' par ex. et recuperer 'jean'

finstreet, en quoi faire une recherche full text (MATCH AGAINST) m'aiderai ?

merci

A rien, j'avais lu ton post en diagonale :)
 
WRInaute impliqué
chava2b a dit:
Tilt, tres bien ton regex, mais il me donne les resultats meme s'il n'y a pas toutes les lettres; pour 'jean' et me donne 'anna' par ex.;

Si je ne trouve pas directement le prenom, je veux essayer de voir s'il n'y a pas 2 lettres interverties, 'jaen' par ex. et recuperer 'jean'

finstreet, en quoi faire une recherche full text (MATCH AGAINST) m'aiderai ?

merci

je crois que ce serait plus de la boulette en php avec levenshtein() (appliqué aux résultats de la requête) :
http://php.net/levenshtein
 
WRInaute occasionnel
Tilt, j'ai regardé cette fonction mais je pense que je m'en servirai apres, si j'ai plusieurs resultats. Pour le moment, je ne vais pas faire un levenshtein pour chaque enregistrement de ma table. (si je recherche 'jean' ca ne me sert pas de faire un levenshtein avec 'pierre'); il faudrait que j'épure avant mes resultats.

(j'épure avec ton rlike mais j'ai l'impression que je peux avoir le resultat directement, non ?)


serval2a, je veux avoir l'enregistrement ou il y a seulement les lettres que je cherche. Dans mon exemple, je veux dire à mysql :
-> donne moi les enregistrements ou il n'y a que la lettre 'J', la lettre 'E', la lettre 'A', et la lettre 'N', et pas d'autres lettres.
(ca me sert a rien d'avoir les resultats où il y a un 'T' par ex. si je cherche un prenom ou il n'y a pas de 'T')
 
Discussions similaires
Haut