Чувствительность к регистру в логическом режиме запроса MySQL

#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, и оно по-прежнему действует таким образом.