如何在不区分大小写的MySQL数据库上执行区分大小写的搜索?

时间:2011-04-22 07:25:10

标签: mysql sql collation case-sensitive

在我的utf8_general_ci数据库中,99.99%的搜索应该不区分大小写。现在有一个特定的情况,我需要以区分大小写的方式查找一些数据。该字段是一个varchar字段,我通常搜索不区分大小写。

我的问题是:我是否可以对通常不区分大小写的字段执行区分大小写的搜索?

4 个答案:

答案 0 :(得分:6)

从页面中选择* 其中convert(pageTitle使用latin1)整理utf8_ ='Something'

我发现this answer描述性足够了:))

答案 1 :(得分:4)

您必须使用COLLATE运算符

更改搜索查询中使用的操作数的排序规则

OR

  

如果你想要一个专栏   以区分大小写的方式处理,   用区分大小写或者声明它   二进制整理。

请参阅此处http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

答案 2 :(得分:3)

我建议更改排序规则类型,使其区分大小写,然后在99.99%的其他情况下更改您的代码。有关更改字段检查案例的信息:http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

一旦字段类型设置为区分大小写,您可以使用SQL中的LOWER()UPPER()函数来标准化不敏感搜索的大小写。

答案 3 :(得分:1)

您可以使查询区分大小写, 例如,如果要检查用户标识和密码:

Select * from TableName Where WHERE LoginId=@userid COLLATE SQL_Latin1_General_CP1_CS_AS AND Password=@password COLLATE SQL_Latin1_General_CP1_CS_AS

检查用户标识和密码,如果为真,则返回值(区分大小写)。