2010-08-26 4 views
0

J'essaie de rechercher dans la base de données un mot-clé comme Obrien et les résultats devraient renvoyer tous les enregistrements avec O'Brien aussi. J'ai essayé avec la recherche fulltext de MySQL. Le problème est que le jeu de résultats ne peut contenir qu'un seul enregistrement, mais la fonction de texte intégral exige que le jeu de résultats contienne au moins 3 enregistrements ou 50% des résultats correspondants.Recherche d'enregistrements avec apostrophe

Est-ce que quelqu'un sait comment faire cela?

+0

Pourquoi ne pas ignorer les autres résultats? Aussi, comment pouvez-vous être sûr que le premier résultat est celui que vous cherchez? –

+0

Désolé si ma question n'était pas claire. Ce que je voulais dire, c'est que les résultats ne peuvent contenir que 1 correspondance, et c'est là que mysql fulltext search n'affiche pas ce seul match – peace

Répondre

0

pourrait vous faire quelque chose comme:

REPLACE(name,'''','') 

Je l'ai testé:

DECLARE @name VARCHAR(10) 
SELECT @name = 'O''brien' 

SELECT @name as "pre", REPLACE(@name, '''', '') as "post" 

et il me jeu O'brien pour la colonne avant et Obrien pour la colonne de poste.

modifier après réponse de OP:
essayer cette

SELECT TOP 1 * 
FROM table 
WHERE REPLACE(name, '''', '') = REPLACE(searchString, '''', '') 
+0

Merci pour votre réponse rapide. J'ai essayé cette solution, mais ce que je cherche est d'entrer la chaîne de recherche comme "Obrien" et s'attendre à ce que les résultats montrent les enregistrements avec "Obrien" et "O'Brien". – peace

0

Merci beaucoup pour votre réponse. Vraiment apprécier votre aide. J'ai essayé cela et cela a fonctionné pour moi. J'ai obtenu cette solution de ce site lui-même.

Titre: Apostrophes et SQL Server FT recherche

la dernière solution suggérée par "Alistair Frappez" qui est

SELECT nom FROM table OU nom LIKE '% de la valeur%' OR REPLACE (nom, '' '', '') LIKE '% valeur%'

Ceci fonctionne même lorsque FT n'est pas activé.

Merci à vous tous. J'espère que cela aide quelqu'un.