MySQL字段值大小写敏感的解决方案

最近在用开源的MySQL 8.0开发本公司的产品,在客户现场建表时默认使用的是CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 字符集导致与oracle的结果不一致,最后将建表时的字符集改为utf8mb3就可以了。

正常建表如下,默认使用的是CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 字符集

[test]> CREATE TABLE t3(id int primary key, name varchar(50))engine = xxx;
Query OK, 0 rows affected (0.07 sec)[test]> insert into t3 values(1, '123AA123'), (2, '123aa123');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0[test]> show create table t3;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                   |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t3    | CREATE TABLE "t3" ("id" int NOT NULL,"name" varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,PRIMARY KEY ("id")
) ENGINE=xxx DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |[test]> select * from t3 where name = "123AA123";
+----+----------+
| id | name     |
+----+----------+
|  1 | 123AA123 |
|  2 | 123aa123 |
+----+----------+
2 rows in set (0.00 sec)

上面的结果导致查询有2条记录,也就是大小写不敏感,跟oracle结果不一致,oracle就一条结果。

后面经过排查要与oracle结果一致,将建表时的字符集改为utf8mb3就可以了。因为字符集utf8mb3对大小写是敏感的。

[test]> CREATE TABLE t4(id int primary key, name varchar(50))engine = xxx collate utf8_bin;
Query OK, 0 rows affected, 1 warning (0.08 sec)[test]> show warnings;
+-------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message                                                                                                                                                   |
+-------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
| Error | 1064 | You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'warning' at line 1 |
+-------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)[test]> select * from t4 where name = '123aa123';
+----+----------+
| id | name     |
+----+----------+
|  2 | 123aa123 |
+----+----------+
1 row in set (0.01 sec)[test]> select * from t4 where name = '123AA123';
+----+----------+
| id | name     |
+----+----------+
|  1 | 123AA123 |
+----+----------+
1 row in set (0.00 sec)

但是这样导致建表时会有警告,字符集这块相当于从utf8mb4 退化到了 utf8mb3了。

还有一种方法就是建表时,默认使用utf8mb4字符集,但是建表之后立即执行:

alter table test3 modify name varchar(50) collate utf8_bin;将name列的字符集改为utf8_bin。

总结:建表时指定的字符集导致大小写不敏感导致的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制作Slider组件

利用as3,我们可以尝试制作一些有趣的组件,虽然现在已经有很多实用的组件,但是自己尝试写一下也是不错的。利用as3语法,借用了绘图Api我们尝试制作一下这个组件。因为我们不需要很强大的功能,对此我们只是需要选取其一部…

Android 编程下的四大组件之服务(Service)

服务(Service) 是一种在后台运行,没有界面的组件,由其他组件调用开始。Android 中的服务和 Windows 中的服务是类似的东西,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。 服务&#xf…

mysql ld preload过程

纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。 导读 本文将叙述通过二进制源码方式安装Percona-5.7.15,并进行快速启动。这边如何使用二进制版本安装Percona-5.7.15就不说了,和之前一模一样。 不做多余的事 1、解…

第六章实验报告(函数和宏定义实验)

C程序设计实验报告 一、实验项目: 1、编写由三角形三边求面积的函数 2、编写求N阶乘的函数 3、求两个整数的最大公约数 4、打印输出三角形 5、求500以内的所有亲密数对 姓名:廖云福 实验地点:教学楼514教室  实验时间:2019.4.30 一、实验目…

HttpRequest 与HttpWebRequest 有什么区别

System.Web.HttpRequest是封装浏览器对服务器的请求的,主要用在ASP.NET中,其中包括浏览器请求的网址,查询字符串数据或表单数据等等 而System.Net.HttpWebRequest则是用来简化网络请求的过程,从服务器上获取文件/结果的&#xff0…

mysqld_safe启动脚本源码阅读与分析

原文链接:https://blog.csdn.net/weixin_39844426/article/details/113422137 前几天读了下mysqld_safe脚本,个人感觉还是收获蛮大的,其中细致的交代了MySQL数据库的启动流程,包括查找MySQL相关目录,解析配置文件以及…

统计文章中字母出现频率

代码位置:https://github.com/Evilleon/article-vocabulary/letter转载于:https://www.cnblogs.com/YXSZ/p/10809930.html

mapreduce shuffle过程问答

通过hadoop权威指南学习hadoop,对shuffle过程一直很疑惑,经过查看网上多个帖子,最终 完成此篇问答总结。 1.什么叫shuffle 从map任务输出到reducer任务输入之间的过程就叫做shuffle 2.每个map任务都有对应的缓存吗?默认是多少&…

Oracle为JDK 8寻求社区参与

据InfoQ报道,随着Java 7功能的日益完备,Oracle正在将注意力转向JDK 8,Java平台组的首席架构师Mark Reinhold正在寻求Java社区的参与: 我们已经知道JDK 8中会有一些大家伙,同时也会为其他大大小小的特性留下空间。因此需…

ubuntu下安装pt-query-digest

最近在改造开发MySQL时要使用pt-query-digest工具分析性能问题,一路遇到了一些问题,记录下来便于日后翻看。 系统: #45~20.04.1-Ubuntu SMP Mon Apr 4 09:38:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux 在安装过程中遇到了很多的问题&#…

S2-016、S2-017

前言 由于S2-016、S2-017出现的原因时相同的,只是由于poc不一样,造成了不同的攻击。S2-016是RCE,S2-017是开发型重定向漏洞。这里将两个漏洞放一起分析。另外“Struts2系列起始篇”是我整各系列的核心,希望大家能花些时间先看看。…

struts 2 配置通配符

2019独角兽企业重金招聘Python工程师标准>>> 随着Web应用程序的增加,所需的Action也会更多,从而导致大量的action映射,使用通配符可以减少action配置的数量,使一些具有类似行为的Action或者Action方法可以使用通用的样…

image to pdf

public void ExportDataIntoPDF(string pathName, String path){//导出至PDFiTextSharp.text.Document document new iTextSharp.text.Document(); try{iTextSharp .text .pdf .PdfWriter .GetInstance (document, new FileStream(pathName, FileMode.CreateNew ));document.O…

Mysql索引类型分析

一、简介MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引二、语句CREATE TABLE table_name[col_name data type][unique|fulltext][index|key][index_name](col_name[length])[asc|desc] 1.unique|fulltext为可选参数&#xf…

记一次使用pt-query-digest工具分析MySQL慢查询日志

最近遇到了MySQL性能问题,使用percona 的 pt-query-digest工具分析性能的瓶颈点。并且pt-query-digest工具要优于MySQL本身自带的mysqldumpslow工具。 查看pt-query-digest工具在ubuntu下的安装流程请看:ubuntu下安装pt-query-digest_一缕阳光a的博客-CS…

App 运营的指标具体都有哪些?(四)

因产品而异,要看产品类型的工具类,启动次数很重要;社区类,活跃用户和UGC很重要;游戏,在线人数和arpu值是关键。。。转载于:https://blog.51cto.com/yerik/1166365

骗子公司陆续公布中...

11年04月11日,在网吧投简历,突然一条短信,算是收到的第一个面试通知,有点激动,“通诚公司”,而且我们4个同时收到,第一感觉就是不对劲,公司面试通知都会电话通知的,去百度…

Hadoop2.4.1入门实例:MaxTemperature

版权声明:本文为博主原创文章。转载请注明来自http://blog.csdn.net/jediael_lu/ https://blog.csdn.net/jediael_lu/article/details/37596469 注意:下面内容在2.x版本号与1.x版本号相同适用,已在2.4.1与1.2.0进行測试。一、前期准备 1、创建…

Entity Framework 4.1 DbContext使用记之三——如何玩转实体的属性值?

之前的两篇有关EF4.1的文章反响不错,感谢大家的支持!想体验EF4.1的新功能?RTW版本已经发布啦,http://www.microsoft.com/downloads/en/details.aspx?FamilyIDb41c728e-9b4f-4331-a1a8-537d16c6acdf&displaylangen Entity …

[WorldWind学习]5.相机对象

首先查看WorldWindow的事件:OnMouseUp、OnMouseMove、HandleKeyDown,这几个方法中多次调用this.drawArgs.WorldCamera的各种属性实现了场景的控制,包括球的旋转、场景的放大缩小,上下移动。 1. 接下来查看CameraBase类RotationYaw…