Определить регистр символов в предложении WHERE - PullRequest
1 голос
/ 31 июля 2011

например, TableColumn может содержать значение в формах New, new или NEW, как я могу написать запрос, который возвращает только

SELECT * FROM myTable
WHERE myColumn = 'New'

, но не возвращает TableRows содержит new или NEW

Ответы [ 4 ]

6 голосов
/ 31 июля 2011

Для MySQL простой вариант:

SELECT * FROM myTable
WHERE myColumn = 'New'
AND BINARY(myColumn) = BINARY('New');

Второе условие логически достаточно, но делает запрос медленным, если таблица большая (индекс на myColumn использовать нельзя). Сочетание двух условий позволяет использовать индекс для первого условия, а затем отфильтровывать несовпадающий регистр.

3 голосов
/ 31 июля 2011

Вы можете использовать COLLATE в предложении where

SELECT *
FROM myTable
WHERE myColumn COLLATE latin1_general_cs = 'New'
1 голос
/ 21 августа 2017

Лучший способ сделать этот столбец чувствительным к регистру - это изменить этот конкретный столбец, если charset имеет UTF8, изменить его параметры сортировки, чтобы сопоставить utf8_bin, после модификации столбца он будет искать с учетом регистра.

Т.е. у меня есть таблица имен людей с именем столбца "имя".

     alter table people 
     modify column name varchar(50) charset utf8 collate utf8_bin;

Примечание: Вы можете использовать тип данных varchar для varbinary, он отлично работает ..

0 голосов
/ 06 марта 2018

SELECT * FROM users WHERE BINARY userid = 'Rahul';mysql не проверяет регистр слова, поэтому в случае имени пользователя или идентификатора пользователя мы должны проверить регистр также для большей безопасности.Я надеюсь, что это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...