这个问题以前在这个网站上被问到过,但我找不到一个充分的答案。如果我在做这样的查询:
Select Seller from Table where Location = 'San Jose'
我怎么能让它只返回卖家的位置“圣何塞”而不是“圣何塞”或其他什么?
默认情况下,MySQL查询不区分大小写。下面是一个查找'value'的简单查询。然而,它将返回'VALUE', 'value', 'VaLuE'等…
'value'
'VALUE'
'VaLuE'
SELECT * FROM `table` WHERE `column` = 'value'
好消息是,如果你需要进行区分大小写的查询,使用BINARY操作符很容易做到,它会强制逐字节比较:
BINARY
SELECT * FROM `table` WHERE BINARY `column` = 'value'
要改进詹姆斯精彩的回答:
最好将BINARY放在常量前面:
SELECT * FROM `table` WHERE `column` = BINARY 'value'
将BINARY放在column前面可以防止在该列上使用任何索引。
column
虽然列出的答案是正确的,我是否可以建议,如果你的列是保存区分大小写的字符串,你阅读的文档并相应地改变你的表定义。
在我的例子中,这相当于将我的专栏定义为:
`tag` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ''
在我看来,这是优先于调整您的查询。