#mysql #search #case-insensitive
#mysql #Поиск #без учета регистра
Вопрос:
Мой поиск чувствителен к регистру, но я хочу, чтобы он не учитывал регистр. В MySQL для моей базы данных и таблицы установлено значение utf8_general_ci
. Поиск по-прежнему чувствителен к регистру. Я провел некоторое исследование, и, похоже, причина этого кроется BOOLEAN MODE
в моем запросе. Есть ли способ сделать его нечувствительным к регистру? итак, независимо от того, как я набираю любое слово с любой чувствительностью, оно всегда будет отображаться в результатах поиска?
SELECT
s_cost_sheet.partnumber,
s_cost_sheet.description,
s_cost_sheet.price,
s_cost_sheet.notes
FROM s_cost_sheet
WHERE MATCH ( partnumber, description, price, notes )
AGAINST('%".$search."%' IN BOOLEAN MODE) ORDER BY partnumber, description, price, notes ASC";
Я протестировал поиск в phpMyAdmin, и он работает независимо от того, как ввести слово plate, это может быть Plate, PLATE, plaTE. Все это работает нормально, поэтому должно быть что-то внутри этого, что вызывает проблему.
Комментарии:
1. Что насчет столбцов? Они также в utf8_general_ci?
2. да, они также имеют значение utf8_general_ci
3. Я думаю, что без двойных кавычек это должно работать хорошо. Почему вы используете символы процентов?
4. с помощью ‘.search.’ он по-прежнему чувствителен к регистру. Я извлекаю результаты, но только если я использую точную чувствительность. например. Я ищу табличку, но результаты не отображаются, потому что она введена как табличка. поэтому мне нужно найти табличку, чтобы она отображалась. Я хочу, чтобы он находил любое слово, независимо от того, что (ТАРЕЛКА, тарелка, тарелка, тарелка и т. Д.). Как у меня это есть, это должно работать, поэтому я не понимаю вопроса о том, почему он не работает
Ответ №1:
Если один из столбцов имеет тип int или числовой, поиск становится чувствительным к регистру. Также нет необходимости использовать% в искомой строке
Комментарии:
1. Да, это правильно. Я изменил их все на VARCHAR вместо того, чтобы использовать 2 столбца как десятичные. Спасибо!
Ответ №2:
ПОПРОБУЙТЕ изменить таблицу и столбец на utf8_general_ci
, и вам не нужно использовать %
подстановочный знак с FULL TEXT Search
РЕКОМЕНДАЦИИ Также избегайте использования большого количества столбцов с ORDER BY
предложением, если вам нужны более быстрые результаты.
Комментарии:
1. У меня для таблицы и столбца установлено значение utf8_general_ci, и оно по-прежнему действует таким образом.