Slash-Zn
@Slash-Zn

Как сделать регистронезависимый поиск по longblob?

Здравствуйте.
Есть поле типа "longblob", в нем необходимо сделать регистронезависимый поиск.

Если я правильно понял, поля типа "longblob" регистрозависимые. Верно? По крайней мере, у меня поиск, на данный момент чувствителен к регистру. При этом сама таблица "utf8_general_ci".

Подскажите, как сделать регистронезависимый поиск по longblob?
Спасибо.
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега MySQL
Поля данных BLOB/LONGBLOB вообще для хранения бинарных данных, а не для хранения текста, по которому может идти поиск.
Если нужен поиск, то сделайте тип поля TEXT/LONGTEXT.

Далее, что подразумевается под поиском?
Есть в MySQL и LIKE, и REGEXP, и MATCH ... AGAINST

Если речь о LIKE или MATCH ... AGAINST, то достаточно будет задать кодировку utf8_general_ci, да.
Если говорим о REGEXP, то надо будет искомую строку в нижний регистр переводить. Например, с помощью LOWER()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
как сделать регистронезависимый поиск по longblob?

Регистрозависимость операций поиска/сравнения определяется применяемым COLLATION.
LONGBLOB имеет по умолчанию binary collation (например, utf8mb4_bin) - поэтому сравнение выполняется бинарное.
Для регистронезависимого текстового сравнения надо явно определить требуемый COLLATION в запросе. Типа
WHERE column COLLATE utf8mb4_0900_ai_ci LIKE 'pattern'

Если надо ещё и charset подкорректировать, то дополнительно использовать функцию CONVERT().
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы