#php #mysql
#php #mysql
Вопрос:
Предположим, у меня есть таблица пользователей. Один из столбцов таблицы, хранящей имя пользователя. Также предположим, что в таблице есть строки. Имена пользователей следующие: «Суман», «Сумон», «Папия». Теперь я хочу запрос mysql, если пользователь выполняет поиск из таблицы по имени пользователя с помощью ‘Suman’, то в результате будут показаны две строки, одна для ‘Suman’, а другая для ‘Sumon’.
Комментарии:
1. посмотрите на полнотекстовые запросы. dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
2. Ищите SoundEx в MySQL
3. полный текст не будет работать с «опечатками». поиск «suman» вернет «suman». он не вернет «sumon»
4. Вы пробовали добавить порядок по имени? Потому что, когда вы делаете where firstname как ‘%sum%’, он сортирует выходные данные по добавлению. Итак, вам нужно добавить порядок по имени, чтобы получить Sum после Suman
5. как насчет использования расстояния Левенштейна ?
Ответ №1:
Вы можете использовать soundex, он будет сравнивать, совпадает ли звучание значений в firstname со звучанием предоставленного слова
Согласно документам
При использовании SOUNDEX() вы должны знать о следующих ограничениях:
Эта функция, реализованная в настоящее время, предназначена для хорошей работы со строками, которые находятся только на английском языке. Строки на других
языках могут не давать надежных результатов.Эта функция не гарантирует получение согласованных результатов со строками, использующими многобайтовые наборы символов, включая utf-8.
select *
from t
where soundex(firstname)=soundex('Suman')