可能重复: How to apply wildcard in instr() in 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)
相同;
答案 0 :(得分:3)
我相信这会有用
SELECT COUNT(*) FROM users WHERE INSTR(binary flags, 'T') > 0;
答案 1 :(得分:2)
测试,
SELECT binary 'AKkRBbagSsPpCtmxeGhUX' LIKE '%T%';
正如预期的那样,产生'0'。根据{{3}}文档,如果LIKE的任何一个操作数是二进制的,LIKE就会执行二进制(因此,区分大小写)比较。