2

可能重复: 如何在 MySQL 的 instr() 中应用通配符?

可能的重复链接显示了一个与我当前的一种完全相同的查询。但是,我找不到使它成为区分大小写的匹配的方法。:\

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

我数到了 46,这显然是错误的。它计算标志中的每个实例“T”,无论它是大写还是小写。

它根据 MySQL 文档工作。我在 MySQL 文档中发现了一些内容,该内容说要在变量上放置一个“@”符号以使其区分大小写。但是,我在 @'T' 上尝试了这个以形成以下查询:

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

我得到的计数为零。

任何人都可以为我解释一下吗?:)

编辑:

忘记说了,不好意思。我还尝试将 a作为 where 子句,但仍然失败并返回与;LIKE '%T%'相同的结果。(INSTR(flags, 'T') > 0)

4

2 回答 2

6

我相信这会奏效

SELECT COUNT(*) FROM users WHERE INSTR(binary flags, 'T') > 0;
于 2010-01-10T05:22:26.760 回答
2

经测试,

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

正如预期的那样,产生“0”。根据字符串比较文档,如果 LIKE 的任一操作数是二进制的,则 LIKE 会执行二进制(因此区分大小写)比较。

于 2010-01-10T05:59:11.647 回答