MySQL区分大小写查询

这个问题以前在这个网站上被问到过,但我找不到一个充分的答案。如果我在做这样的查询:

Select Seller from Table where Location = 'San Jose'

我怎么能让它只返回卖家的位置“圣何塞”而不是“圣何塞”或其他什么?

121218 次浏览

默认情况下,MySQL查询不区分大小写。下面是一个查找'value'的简单查询。然而,它将返回'VALUE''value''VaLuE'等…

SELECT * FROM `table` WHERE `column` = 'value'

好消息是,如果你需要进行区分大小写的查询,使用BINARY操作符很容易做到,它会强制逐字节比较:

SELECT * FROM `table` WHERE BINARY `column` = 'value'

要改进詹姆斯精彩的回答:

最好将BINARY放在常量前面:

SELECT * FROM `table` WHERE `column` = BINARY 'value'

BINARY放在column前面可以防止在该列上使用任何索引。

虽然列出的答案是正确的,我是否可以建议,如果你的列是保存区分大小写的字符串,你阅读的文档并相应地改变你的表定义。

在我的例子中,这相当于将我的专栏定义为:

`tag` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ''

在我看来,这是优先于调整您的查询。