Как использовать чувствительность к регистру в instr () в MySQL? - PullRequest
1 голос
/ 10 января 2010

Возможный дубликат: Как применить подстановочный знак в 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;

Я считаю ноль.

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

EDIT:

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

Ответы [ 2 ]

3 голосов
/ 10 января 2010

Я верю, что это будет работать

SELECT COUNT(*) FROM users WHERE INSTR(binary flags, 'T') > 0;
2 голосов
/ 10 января 2010

Протестировано

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

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

...