2009-07-25 4 views
1

Existe-t-il un moyen de rechercher comme ci-dessous les critères dans mysql? Si la réponse pl.Rechercher prob dans la requête mysql

si je recherche avec "murray's" alors alors il retournera des données fines pour "murray's" mais il devrait aussi retourner des données pour "murrays" signifie même mot sans apostrophie ('). De la même manière si je recherche sans apostrophie ('), il cherchera aussi avec apostrophie (').

enfin

si la recherche requête est « murray de », il retournera le « murray de » et « murrays » aussi.

et

si la requête de recherche est "murrays", plus il retournera "murrays" et "murray de" également.

Merci à l'avance

Répondre

1

Votre meilleur pari est de créer un Full Text Index sur votre table.

Vous pouvez alors interroger comme:

select * 
from restaurants 
where match(name) against ('murrays') 

Sauf que, vous pouvez utiliser SOUNDEX ou SOUNDS LIKE dans votre requête. Les deux requêtes suivantes sont exactement identiques :

select * 
from restaurants 
where soundex(name) = soundex('murrays') 

select * 
from restaurants 
where name sounds like 'murrays' 

Notez également que MySQL utilise l'algorithme SOUNDEX original, pas le plus récent. Par conséquent, il retournera des chaînes de longueur arbitraires. Si vous avez déjà utilisé SOUNDEX, assurez-vous d'en tenir compte.

+0

merci, mais ça ne marche pas pour moi – Avinash

+0

Qu'est-ce qui ne fonctionne pas pour vous? Il y a deux approches ici. Lequel n'a pas volé? – Eric

+0

J'ai les deux types de données dans la base de données comme murrays et murrays. mais tous au-dessus de trois requête ne fonctionne pas pour moi. Si ma requête de recherche est "murrays" alors il va chercher des données pour "murrays" mais pas pour "murray" et vice versa. – Avinash