如何在MySQL中的instr()中使用区分大小写?

时间:2010-01-10 05:20:09

标签: mysql select case-sensitive

可能重复: 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)相同;

2 个答案:

答案 0 :(得分:3)

我相信这会有用

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

答案 1 :(得分:2)

测试,

SELECT binary 'AKkRBbagSsPpCtmxeGhUX' LIKE '%T%';
正如预期的那样,

产生'0'。根据{{​​3}}文档,如果LIKE的任何一个操作数是二进制的,LIKE就会执行二进制(因此,区分大小写)比较。