这个问题以前在这个网站上被问到过,但我找不到一个充分的答案。如果我在做这样的查询:
Select Seller from Table where Location = 'San Jose'
我怎么能让它只返回卖家的位置“圣何塞”而不是“圣何塞”或其他什么?
这个问题以前在这个网站上被问到过,但我找不到一个充分的答案。如果我在做这样的查询:
Select Seller from Table where Location = 'San Jose'
我怎么能让它只返回卖家的位置“圣何塞”而不是“圣何塞”或其他什么?
当前回答
虽然列出的答案是正确的,但我建议,如果您的列要保存区分大小写的字符串,请阅读文档并相应地更改表定义。
在我的例子中,这相当于将我的专栏定义为:
`tag` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ''
在我看来,这是优先于调整您的查询。
其他回答
默认情况下,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 ''
在我看来,这是优先于调整您的查询。
为了改进James的精彩回答:
最好把BINARY放在常量前面:
SELECT * FROM `table` WHERE `column` = BINARY 'value'
将BINARY放在列的前面将阻止在该列上使用任何索引。