【发布时间】:2011-08-10 19:49:08
【问题描述】:
在我的utf8_general_ci 数据库中,99.99% 的搜索应该不区分大小写。现在有一种特殊情况,我需要以区分大小写的方式查找一些数据。该字段是一个 varchar 字段,我通常不区分大小写。
我的问题是:我可以对通常不区分大小写的字段执行区分大小写的搜索吗?
【问题讨论】:
标签: mysql sql collation case-sensitive
在我的utf8_general_ci 数据库中,99.99% 的搜索应该不区分大小写。现在有一种特殊情况,我需要以区分大小写的方式查找一些数据。该字段是一个 varchar 字段,我通常不区分大小写。
我的问题是:我可以对通常不区分大小写的字段执行区分大小写的搜索吗?
【问题讨论】:
标签: mysql sql collation case-sensitive
您可以使查询区分大小写, 例如,如果您想检查用户名和密码:
Select * from TableName Where WHERE LoginId=@userid COLLATE SQL_Latin1_General_CP1_CS_AS AND Password=@password COLLATE SQL_Latin1_General_CP1_CS_AS
它检查用户 ID 和密码,如果它们为真则返回值(区分大小写)。
【讨论】:
从页面中选择 * where convert(pageTitle using latin1) collate utf8_ = 'Something'
我发现 this answer 描述性足够 :)
【讨论】:
FROM `table` WHERE convert(`collumn` using latin1) COLLATE latin1_general_cs LIKE '%wOrd'
my_table WHERE CONVERT(my_value USING utf8) COLLATE utf8_general_ci LIKE '%Something%'”
我建议更改排序规则类型,使其区分大小写,然后在 99.99% 的其他情况下更改您的代码。有关更改字段检查大小写的信息:http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html
一旦字段类型设置为区分大小写,您就可以在 SQL 中使用 LOWER() 和 UPPER() 函数来标准化不区分大小写的搜索。
【讨论】:
您必须使用 COLLATE 运算符更改搜索查询中使用的操作数的排序规则
或
如果您希望列始终 以区分大小写的方式处理, 声明它区分大小写或 二进制排序规则。
请看这里http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html
【讨论】:
COLLATE 应用于表中的 SELECT 语句
#1273 - Unknown collation: 'utf8_general_bin' 谢谢,我用了 latin1 然后它工作了