Как использовать чувствительность к регистру в instr() в MySQL?

Возможный дубликат: Как применить подстановочный знак в instr () в MySQL?

Возможный дубликат ссылки показывает запрос, который точно такой же, как мой текущий. Однако я не могу найти способ сделать его чувствительным к регистру. :\

SELECT COUNT(*) FROM users WHERE INSTR(flags, 'T') > 0;

Я получаю счет 46, который явно неверен. Он подсчитывает каждый экземпляр «T» в флагах, будь то верхний или нижний регистр.

Он работает согласно документации MySQL. Я нашел что-то в документах MySQL, в которых говорилось, что нужно поместить символ «@» в переменную, чтобы сделать ее чувствительной к регистру. Однако я попробовал это на @'T', чтобы сформировать следующий запрос:

SELECT COUNT(*) FROM users WHERE INSTR(flags, @'T') > 0;

Я получаю счет ноль.

Может ли кто-нибудь пролить свет на это для меня? :)

ИЗМЕНИТЬ:

Забыл упомянуть, извините. Я также попробовал использовать LIKE '%T%' в качестве предложения where, но оно все еще не работает и возвращает то же, что и (INSTR(flags, 'T') > 0);


person Zack    schedule 10.01.2010    source источник
comment
Возможно, вы могли бы опубликовать свой образец значения flags, чтобы мы могли проверить его.   -  person cmptrgeekken    schedule 10.01.2010
comment
flags будет чем-то вроде TkKp, где T — это то, что я сопоставляю. Пример строки, где буква T в нижнем регистре: AKkRBbagSsPpCtmxeGhUX.   -  person Zack    schedule 10.01.2010
comment
Я пытаюсь подсчитать, сколько записей в моей таблице имеют определенное поле, содержащее T.   -  person Zack    schedule 10.01.2010


Ответы (2)


Проверено,

SELECT binary 'AKkRBbagSsPpCtmxeGhUX' LIKE '%T%';

выдает «0», как и ожидалось. Согласно документации Сравнение строк, LIKE выполняет двоичное (таким образом, с учетом регистра) сравнение, если любой из его операндов является двоичным.

person cmptrgeekken    schedule 10.01.2010

Я верю, что это сработает

SELECT COUNT(*) FROM users WHERE INSTR(binary flags, 'T') > 0;
person Rob Van Dam    schedule 10.01.2010
comment
Хм. Не сработало, так как вернуло число 5, что по-прежнему неверно :( - person Zack; 10.01.2010
comment
Вы упомянули попытку LIKE, пробовали ли вы binary flags LIKE '%T%' или, может быть, binary flags LIKE binary '%T%'. - person Rob Van Dam; 10.01.2010