как искать точную строку в MySQL - PullRequest
10 голосов
/ 09 июля 2011

Я пытаюсь найти точное совпадение строки в MySQL. Строка «nrew». Но когда я делаю запросы ниже, я все равно получаю результат:

SELECT UserID FROM sys_users WHERE UserID='NREW'
SELECT UserID FROM sys_users WHERE UserID='NrEw'

Пожалуйста, помогите.

Ответы [ 5 ]

22 голосов
/ 09 июля 2011
SELECT UserID FROM sys_users WHERE BINARY UserID='NREW'
8 голосов
/ 09 июля 2011

Параметры сортировки по умолчанию, которые MySQL использует для сравнения, нечувствительны к регистру. Вам нужно указать регистр с учетом регистра или двоичный файл. Вы можете сделать это при создании столбца или в запросе.

Например:

SELECT UserID FROM sys_users WHERE UserID='NREW' COLLATE latin1_bin

Правильная сортировка зависит от вашего набора символов. Для latin1 по умолчанию вы можете использовать latin1_bin. Для utf8, utf8_bin.

5 голосов
/ 09 июля 2011

Вы можете использовать ключевое слово Binary,

SELECT UserID FROM sys_users WHERE BINARY UserID='nrew'

см. здесь

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

Один из методов - использовать LIKE BINARY вместо =:

SELECT UserID FROM sys_users WHERE UserID LIKE BINARY 'nrew';
1 голос
/ 09 июля 2011

Дайте это попробовать: http://www.devx.com/tips/Tip/13043

Select UserID from sys_users where convert(varbinary, UserID) = convert(varbinary, 'NREW') 

Или попробуйте COLLATE

http://aspadvice.com/blogs/ssmith/archive/2007/09/30/Case-Sensitive-or-Insensitive-SQL-Query.aspx

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