MySQL的,UTF-8列:如何选择只有区分大小写?(mysql, utf-8 column: ho

2019-07-29 02:25发布

我使用UTF-8字符串的工作。 他们应该被存储在一个MySQL数据库表。 这就是为什么我决定选择一些UTF-8归类为几列。 现在我看到的选择中不明确的,因为我猜到了。 问题是SELECT语句应区分大小写。 但事实并非如此。

第一个选项是选择其他UTF-8整理(唯一的非CI归类utf8_bin据我看到的)。 它是一个解决方案吗? 第二个是在SELECT语句中使用BINARY:

select col1, col2
from table1
where BINARY col3='CasE_sENsiTive';

这是相当简单,但它降低了至少表现为X10倍,甚至更多。 我的表有1个指数,并没有BINARY(没有指数=慢)工作正常。

是什么在我的情况的解决方案?

谢谢。

Answer 1:

可以提高通过以下方式区分大小写的搜索性能:

select col1, col2 from table1 where col3='Case_sEnsiTive' AND BINARY col3="CasE_sENsiTive";

然而,如果没有很好的理由有区分大小写排序,我强烈建议使用utf8_bin的排序规则。



Answer 2:

要么使用您提供的例子,或者,如果你总是把列区分大小写,指定一个区分大小写的排序规则,以它(即在结尾的整理_cs [区分大小写]或_bin [二])。 见大小写敏感性在MySQL参考。



文章来源: mysql, utf-8 column: how to select only case-sensitive?