получать записи о Сан-Франциско при поиске «SanF» в mysql

Получите запись «Сан-Франциско», когда я ищу «SanF»;

SELECT * FROM table WHERE col LIKE '%san%'; Works SELECT * FROM table WHERE col LIKE '%san F%'; Works SELECT * FROM table WHERE col LIKE %sanF%'; Not Working 

Related of "получать записи о Сан-Франциско при поиске «SanF» в mysql"

Я боюсь, что оператор LIKE не является панацеей для запросов на основе текстового поиска. Если вы действительно хотите sanF пользовательский ввод sanF с записями, содержащими San Francisco , тогда вам придется удалить пробелы из столбца, а затем выполнить сравнение.

 SELECT * FROM table WHERE REPLACE(col, ' ', '') LIKE '%sanF%'; 

Вы также можете рассмотреть возможность массирования ввода пользователя на стороне приложения, чтобы ваши исходные два условия LIKE ( '%san%' и '%san F%' ) охватывали каждый случай.

 SELECT * FROM table WHERE col LIKE '%sanF%'; will never work for 'San Francisco' SELECT * FROM table WHERE REPLACE(col, ' ', '') LIKE '%sanF%'; 

правильное использование. Но функция REPLACE может замедляться, и вы можете увидеть проблему производительности для большого набора данных, даже если запрос является дорогостоящим. Люди оптимизируют его, применяя индексы в столбце, или пытаясь использовать San F% или %Francisco . То, что мы сделали, вместо того, чтобы использовать как на стороне, мы просто выполняли как на одной стороне.

В php вы можете заменить все пробелы на _ или % s. Или вы можете сделать это в запросе следующим образом:

 SELECT * FROM table WHERE col LIKE CONCAT('%', REPLACE('San F', ' ', '%'), '%') SELECT * FROM table WHERE col LIKE CONCAT('%', REPLACE('San F', ' ', '_'), '%') 

Надеюсь это поможет!