2010-08-26 4 views
0

Я пытаюсь найти базу данных для ключевого слова, такого как Obrien, и результаты должны возвращать все записи вместе с O'Brien. Я попытался использовать полнотекстовый поиск MySql. Проблема с ним заключается в том, что набор результатов может содержать только 1 запись, но полнотекстовая функция требует, чтобы набор результатов содержал не более 3 записей или 50% совпадающих результатов.Поиск записей с апострофом

Кто-нибудь знает, как это сделать?

+0

Почему бы просто не проигнорировать другие результаты? Кроме того, как вы можете быть уверены, что первым результатом является тот, который вы ищете? –

+0

Извините, если мой вопрос не был ясен. Я имел в виду, что результаты могут содержать только 1 совпадение, и именно здесь mysql fulltext search не показывает это единственное соответствие. – peace

ответ

0

вы могли бы сделать что-то вроде:

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

Я тестировал:

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

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

и игру мне О'Брайен для предварительной колонки и Obrien для почтового столбца.

редактировать после ответа от OP:
попробовать это

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

Спасибо за быстрый ответ. Я пробовал это решение, но что Я ищу, чтобы ввести строку поиска как «Obrien» и ожидать результатов, чтобы показать записи с «Obrien» и «O'Brien». – peace

0

Большое вам спасибо за ваш ответ. Поистине оцените вашу помощь. Я попробовал это, и это сработало для меня. Я получил это решение с этого сайта.

Название: Апострофы и SQL Server Поиск FT

последнее решение, как было предложено "Alistair Knock", который

ВЫБРАТЬ фамилия FROM таблицы WHERE, фамилия LIKE '% значение%' ИЛИ ЗАМЕНА (фамилия, '' '', '') LIKE '% value%'

Это работает, даже если FT не включен.

Спасибо всем. Надеюсь, это поможет кому-то.

Смежные вопросы