MySQL查询不区分大小写的问题总结

Posted Huazie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL查询不区分大小写的问题总结相关的知识,希望对你有一定的参考价值。

mysql查询不区分大小写问题

1. 问题描述

最近,笔者在开发 Flea Auth 模块的过程中,准备验证以注册的账号huazie进行登录的场景,结果以HUAZIE成功登录,而数据库中存储的账号是huazie。

2. 问题分析

简单分析了代码,发现了MySQL查询语句出现如下的现象:


上述数据库里 account_code 是小写,我们再来试一下数据库里 account_code 是大写的场景:

显然,不管 account_code 字段在查询语句里值的大小写如何,都可以查询到数据库的数据。

这就引出了MySQL查询不区分大小写的问题

我们首先来看下 account_code 字段的设计:


查询 MySQL中文文档–MySQL中的字符集和校对 可知如下:

恍然大悟,醍醐灌顶,上述采用的 排序规则 为 utf8_general_ci,其中 ci 表示 大小写不敏感。

  • ci (case insensitive) : 大小写不敏感,即不区分大小写
  • cs (case sensitive) : 大小写敏感,即区分大小写
  • bin (binary)二元校对规则,采用二进制进行编码,也是区分大小写

好了,原因已经了解到了,感兴趣的朋友可以继续了解 MySQL中文文档–第10章:字符集支持

3. 问题解决

既然原因已经找到了,我们来尝试修改下 account_code 字段的排序规则,如下:

现在我们运行一下查询语句试下效果:


由上图可知,目前MySQL的查询已经区分大小写了。

以上是关于MySQL查询不区分大小写的问题总结的主要内容,如果未能解决你的问题,请参考以下文章

mysql模糊查询区分大小写的问题~~

MySQL如何解决MySQL中查询不区分大小写的问题

mysql数据查询分不分大小写

mysql 字段值不区分大小写

转!!mysql 查询条件不区分大小写问题

Oracle 如可控制查询不区分大小写?