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查询不区分大小写的问题总结的主要内容,如果未能解决你的问题,请参考以下文章