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

Select Seller from Table where Location = 'San Jose'

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


当前回答

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

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

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

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

其他回答

为了改进James的精彩回答:

最好把BINARY放在常量前面:

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

将BINARY放在列的前面将阻止在该列上使用任何索引。

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

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

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

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

虽然列出的答案是正确的,但我建议,如果您的列要保存区分大小写的字符串,请阅读文档并相应地更改表定义。

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

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

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