解决MySQL之中一个字段中无法精准的查询多语言语言字母的问题

解决MySQL之中一个字段中无法精准的查询多语言语言字母的问题

目录

1、使用场景

2、实现过程及展示结果

2.1、修改字段排序规则为utf8_bin

2.2 把字段 强制转换校对设置为utf8_bin

3、总结

4、参考文章

1、使用场景

最近接手海外项目,其中有个bug,因为业务数据字段支持多种语言(法文、英文、俄罗斯语言)等。于是在输入模糊搜索法文字母的时候无法。最后查找原因,应该是字段创建默认数据库时候默认使用排序字符集是(utf8_general_ci):

utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写;

utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感,为utf8默认编码。

如果使用默认规则就不区分大小写,因为我在以前开发其他一个项目 用户名要求区分大小写的,遇见类似问题。所以定位此问题关键就是字段的排序规则问题。

2、实现过程及展示结果

因为此bug其他同事修改过,没有解决问题。于是我也网搜索相关文章解决方案。给出的方案见参考文章链接《关于mysql如何精准的查询法文字母》,结合文章方案我总结如下两种解决方式:

如果是做国际版业务,建议字段排序规则都选择 utf8_bin

在不修改现有数据库的情况下,最为简洁办法 把字段 强制转换校对设置为utf8_bin

utf8mb4_unicode_ci 是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序

于是我分别试验以上两种方式:

2.1、修改字段排序规则为utf8_bin

此时执行查询如下代码所示:

SELECT * FROM cos_course c WHERE c.name like concat('%','é','%');

2.2 把字段 强制转换校对设置为utf8_bin

此时执行查询如下代码所示:

SELECT * FROM cos_course c WHERE c.name COLLATE utf8_bin like concat('%','é','%');

3、总结

此问题我的另外一个同事本来就修改过;但是没有找到问题的本质内容。实际上要么是字段变化为可以区分大小写两者比较,要么是数据库字段排序规则直接设置为区分大小写。

4、参考文章

mysql数据库编码格式utf8_general_ci、utf8_bin、utf8_general_cs

utf8mb4的大小写敏感性测试及其修改方法

关于mysql如何精准的查询法文字母

解决MySQL之中一个字段中无法精准的查询多语言语言字母的问题相关教程

mysql查询字段纯字母_解决MySQL之中一个字段中无法精准的查询多语言语言字母的问题...相关推荐

  1. mysql主从切换gtid不一致_解决mysql使用GTID主从复制错误问题

    解决mysql使用GTID主从复制错误问题 做MySQL主从的话肯定会遇到很多同步上的问题, 大多数都是由于机器宕机,重启,或者是主键冲突等引起的从服务器停止工作, 这里专门收集类似问题并提供整理解决 ...

  2. mysql数据没有同步更新_解决MySQL的主从数据库没有同步的两种方法

    问题 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master statu ...

  3. mysql my.ini位置错误_解决mysql导入数据量很大导致失败及查找my.ini 位置(my.ini)在哪...

    数据库数据量很大的数据库导入到本地时,会等很久,然而等很久之后还是显示失败: 这是就要看看自己本地的没mysql是否设置了超时等待,如果报相关time_out这些,可以把mysql.ini尾部添加ma ...

  4. mysql手动启动1067错误_解决MySQL启动时万恶的1067错误(转)

    解决MySQL启动时万恶的1067错误(转)[@more@]我的机器不知为何,安装MySQL的时候,一到配置那一步就无休止的等待,只好结束任务,然而启动MySQL的时候出现1067错误提示.卸载,依然 ...

  5. mysql 5.6 登录 警告_解决mysql登录出现警告问题的简单方法

    解决mysql登录出现警告问题的简单方法 发布时间:2020-05-11 11:50:39 来源:亿速云 阅读:125 作者:三月 本文主要给大家介绍解决mysql登录出现警告问题的简单方法,文章内容 ...

  6. mysql 空闲链接超时时间_解决mysql 中共8小时空闲后连接超时的有关问题

    解决mysql 中共8小时空闲后连接超时的问题 我在做项目中发现一个规律,当应用程序和数据库建立连接时,如果超过了8个小时,应用程序句不会去访问数据库,数据库就会出现断掉连接的现象 .这时再次访问就会 ...

  7. mysql错误连接次数过多_解决Mysql连接过多错误的方法

    问:怎样解决mysql连接过多的错误? 答:系统不能连接数据库,关键要看两个数据: 1.数据库系统允许的最大可连接数max_connections.这个参数是可以设置的.如果不设置,默认是100.最大 ...

  8. mysql为什么无法完全删除_解决mysql无法完全删除

    解决mysql数据库无法干净删除导致无法重新安装问题: 1..打开电脑控制面板卸载MySQL数据库软件 2.控制面板中卸载后在删除C盘Program Files (x86)MySQL该目录下剩余的所有 ...

  9. mysql子查询为什么不走索引_解决MySQL中IN子查询会导致无法使用索引问题

    测试表如下: CREATE TABLE`test_table` ( `id`int(11) NOT NULLAUTO_INCREMENT, `pay_id`int(11) DEFAULT NULL, ...

最新文章

  1. 0x17.基础数据结构 - 二叉堆
  2. 再探@font-face及webIcon制作
  3. WCF从理论到实践(15):响应变化
  4. 在SQL Server 2005中解决死锁(转)
  5. java安全编码指南之:Number操作
  6. c# 获取word表格中的内容_Java 获取、删除Word文本框中的表格
  7. 如何高效学习java呢?
  8. 2021 年软件工程现状:Python 或将成为第一大编程语言,中国开源涨势最猛
  9. 边缘计算白皮书_区块链+边缘计算技术白皮书(2020年)
  10. python3 format用法_python3 str.format()的使用
  11. MySQL 在512M一下内存优化配置
  12. 数学建模案例【人口模型 】(马尔萨斯人口模型,Logistic模型)
  13. 【网页开发】登录注册页面01
  14. 菠萝狗四足机器人使用手册
  15. docker 问题集
  16. Arcgis开发系列2 - 修改arcgis infowindow 放大和缩小的模板
  17. MacBook怎样装Win10 双系统玩转Win10
  18. Android OpenCV(四十五):图像修复
  19. torchtext常用函数整理
  20. 危险!80% 用户正在考虑放弃 Oracle JDK…

热门文章

  1. Ubuntu16.04下基于ROS控制Robotiq_2f_85_gripper
  2. 创新云集 携手共赢—— 2018 Oracle NetSuite 中国峰会首度开幕,智驭云端生态未来
  3. urlRewrite实现网站伪装
  4. Xcode7如何手动安装模拟器
  5. 机器学习小组知识点16:指数分布(Exponential Distribution)
  6. android qq音乐布局,仿QQ音乐底部栏
  7. 如何在使用验证码识别软件的时候防止出现第三方
  8. 转一篇网页设计流程的文章(YAH00)
  9. 微信公众平台天气查询,火车票查询,快递查询,小黄鸡,翻译,公交查询的实现
  10. [SIM] MT6589 W+G/G+G dual-talk找不到SIM卡2