2013-06-28 3 views
1

У меня есть запрос, как это, выполненный на столе, где есть несколько ключевых слов через запятую в поле keywords с передней и задней запятой:Как поиск чувствителен к регистру?

SELECT media_id, filename FROM media WHERE keywords LIKE '%,house,%' 

Однако, он не найдет ничего (есть пара тысяч записей в этой таблице, у которой есть своя ключевая фраза "House"). Даже поиск '%,House,%' ничего не нашел.

Что работает делает то, как поиск во всех колпачков:

SELECT media_id, filename FROM media WHERE keywords LIKE '%,HOUSE,%' 

Теперь он будет также найти ключевые слова, как House.

Столбец таблицы и столбец keywordslatin1_german1_ci.

Откуда это поведение?
Как получить обычное поведение, не учитывающее регистр?

+0

Что такое сортировка для поля ключевых слов? – Vatev

+0

Пожалуйста, отобразите для этой таблицы вывод CREATE TABLE. –

+0

@Vatev Сопоставление таблицы и столбца - 'latin1_german1_ci'. –

ответ

0

Чрезвычайно глупо и неразрешимой проблемой.

я расширил ключевые слова, как or или and к фактической логики запроса, даже если они были в пределах слова в сценарии предварительной обработки, поэтому поиск для handsome будет расширен до h && some.

Извините.

0

Вы можете изменить параметры сортировки столбца или вы можете бросить его так:

ВЫБОР media_id, имя файла с носителя WHERE слово LIKE «%, дом,%» СОРТ- utf8_general_ci

+1

В моем понимании '_ci' сопоставлений * c * ase * i * nsensitive и 'latin1_german1_ci' является одним из них. Не так ли? –

+0

Да, я пропустил эту часть при первом чтении вопроса. –

2

Когда приходит чувствительность к регистру в игру Я часто буду LOWER(keywords) like ('%house%')