首页 > 数据库 >MySQL查询不区分大小写的问题总结

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

时间:2023-01-31 18:31:35浏览次数:56  
标签:account code 区分 查询 大小写 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的查询已经区分大小写了。

标签:account,code,区分,查询,大小写,MySQL
From: https://blog.51cto.com/huazie/6029856

相关文章

  • tk4 安装mysql8
    sudoyuminstallmysql-serverservicemysqldrestartgrep"temporarypassword"/var/log/mysqld.log  --查看临时密码mysql-uroot-pupdateusersetauthent......
  • CSS 媒体查询
    CSS媒体查询是CSS3中的一个功能,允许您为不同的媒体类型(例如屏幕,打印机,语音合成器等)和媒体特征(例如屏幕大小,分辨率,方向等)设置不同的样式。例如,如果您想要仅在屏幕宽度不......
  • MySQL------数据类型重点关注
    整数类型整数类型字节有符号数取值范围无符号数取值范围TINYINT1-128~1270~255SMALLINT2-32768~327670~65535MEDIUMINT3-8388608~......
  • 查询表字段说明(存储过程)
    USE[Inroad]GO/******Object:StoredProcedure[dbo].[Help_TableColumn]ScriptDate:2023/1/3117:39:28******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERON......
  • mysql 查询两个日期之间所有天数(查询近两个月所有日期)
    本文转自博文:https://blog.csdn.net/qq_42795259/article/details/126722209遇到一个需求需要查询近两个月所有日期,如下图: 首先实现解决问题如何获取两个日期所有日期,......
  • MySQL Others--读写偏序问题
    读偏序(ReadSkew)在已提交读(readcommitted)事务隔离级别下,事务T1先读取数据X,然后事务T2修改数据X和Y,然后事务T1再读取数据Y,事务T1读取到的X和Y不满足一致性约束。在可......
  • mysql的七种基本关联查询方式
       --内连接SELECTlast_name,department_nameFROMemployeeseJOINdepartmentsdONe.department_id=d.department_id--左外连接SELECTlast_name......
  • mysql查询sql总结
    连表查询一文搞定MySQL多表查询中的表连接(join)SELECT a.id, b.server_idfrom release_recordasa JOINrelease_detailsasb ona.id=b.release_id解析:......
  • Docker 安装 MySQL5.7
    1.拉取数据库镜像dockerpullmysql:5.7 dockerimages命令查看镜像是否下载成功dockerimages2.配置mysql创建mysql目录,用于存放mysql相关配置及数据mkdir-p......
  • 被面试官问住了,MySQL两阶段提交是什么鬼?
    “MySQL中既存在redolog,又存在binlog,这是因为BinLog是MySQLServer提供的一种归档日志,其本身并不具备Crash-Safe能力。而RedoLog本身不具备归档能力,他是一种循环写的日......