0
点赞
收藏
分享

微信扫一扫

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的查询已经区分大小写了。

举报

相关推荐

0 条评论