Как выполнить поиск с учетом регистра в базе данных MySQL без учета регистра? - PullRequest
3 голосов
/ 22 апреля 2011

В моей базе данных, которая utf8_general_ci, 99,99% поисков должны выполняться без учета регистра.Теперь есть конкретная ситуация, когда мне нужно найти некоторые данные с учетом регистра.Это поле типа varchar, которое я обычно ищу без учета регистра.

Мой вопрос: могу ли я выполнить поиск с учетом регистра по полю, которое обычно без учета регистра?

Ответы [ 4 ]

6 голосов
/ 22 апреля 2011

выбрать * со страницы где convert (pageTitle используя latin1) collate utf8_ = 'Something'

я нашел этот ответ достаточно наглядно:)

4 голосов
/ 22 апреля 2011

Вы должны изменить сортировку операндов, которые используются в поисковом запросе, используя оператор COLLATE

ИЛИ

Если вы хотите, чтобы столбец всегда обрабатывался, чувствительный к регистру, объявляйте его с учетом регистра или двоичного сопоставления.

Смотрите здесь http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

3 голосов
/ 22 апреля 2011

Я бы предложил изменить тип сортировки, чтобы он стал чувствительным к регистру, а затем изменить код в 99,99% других случаев.Для получения информации об изменении регистра поля проверьте: http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

Вы можете использовать функции LOWER() и UPPER() в SQL, чтобы стандартизировать регистр для нечувствительных поисков, если тип поля установлен как регистрчувствительный.

1 голос
/ 18 февраля 2012

Вы можете сделать запрос чувствительным к регистру, например, если вы хотите проверить имя пользователя и пароль:

Select * from TableName Where WHERE LoginId=@userid COLLATE SQL_Latin1_General_CP1_CS_AS AND Password=@password COLLATE SQL_Latin1_General_CP1_CS_AS

проверяет идентификатор пользователя и пароль и возвращает значения, если они истинны (с учетом регистра).

...