mysql查询字段纯字母_解决MySQL之中一个字段中无法精准的查询多语言语言字母的问题...
解决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之中一个字段中无法精准的查询多语言语言字母的问题...相关推荐
- mysql主从切换gtid不一致_解决mysql使用GTID主从复制错误问题
解决mysql使用GTID主从复制错误问题 做MySQL主从的话肯定会遇到很多同步上的问题, 大多数都是由于机器宕机,重启,或者是主键冲突等引起的从服务器停止工作, 这里专门收集类似问题并提供整理解决 ...
- mysql数据没有同步更新_解决MySQL的主从数据库没有同步的两种方法
问题 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master statu ...
- mysql my.ini位置错误_解决mysql导入数据量很大导致失败及查找my.ini 位置(my.ini)在哪...
数据库数据量很大的数据库导入到本地时,会等很久,然而等很久之后还是显示失败: 这是就要看看自己本地的没mysql是否设置了超时等待,如果报相关time_out这些,可以把mysql.ini尾部添加ma ...
- mysql手动启动1067错误_解决MySQL启动时万恶的1067错误(转)
解决MySQL启动时万恶的1067错误(转)[@more@]我的机器不知为何,安装MySQL的时候,一到配置那一步就无休止的等待,只好结束任务,然而启动MySQL的时候出现1067错误提示.卸载,依然 ...
- mysql 5.6 登录 警告_解决mysql登录出现警告问题的简单方法
解决mysql登录出现警告问题的简单方法 发布时间:2020-05-11 11:50:39 来源:亿速云 阅读:125 作者:三月 本文主要给大家介绍解决mysql登录出现警告问题的简单方法,文章内容 ...
- mysql 空闲链接超时时间_解决mysql 中共8小时空闲后连接超时的有关问题
解决mysql 中共8小时空闲后连接超时的问题 我在做项目中发现一个规律,当应用程序和数据库建立连接时,如果超过了8个小时,应用程序句不会去访问数据库,数据库就会出现断掉连接的现象 .这时再次访问就会 ...
- mysql错误连接次数过多_解决Mysql连接过多错误的方法
问:怎样解决mysql连接过多的错误? 答:系统不能连接数据库,关键要看两个数据: 1.数据库系统允许的最大可连接数max_connections.这个参数是可以设置的.如果不设置,默认是100.最大 ...
- mysql为什么无法完全删除_解决mysql无法完全删除
解决mysql数据库无法干净删除导致无法重新安装问题: 1..打开电脑控制面板卸载MySQL数据库软件 2.控制面板中卸载后在删除C盘Program Files (x86)MySQL该目录下剩余的所有 ...
- mysql子查询为什么不走索引_解决MySQL中IN子查询会导致无法使用索引问题
测试表如下: CREATE TABLE`test_table` ( `id`int(11) NOT NULLAUTO_INCREMENT, `pay_id`int(11) DEFAULT NULL, ...
最新文章
- 0x17.基础数据结构 - 二叉堆
- 再探@font-face及webIcon制作
- WCF从理论到实践(15):响应变化
- 在SQL Server 2005中解决死锁(转)
- java安全编码指南之:Number操作
- c# 获取word表格中的内容_Java 获取、删除Word文本框中的表格
- 如何高效学习java呢?
- 2021 年软件工程现状:Python 或将成为第一大编程语言,中国开源涨势最猛
- 边缘计算白皮书_区块链+边缘计算技术白皮书(2020年)
- python3 format用法_python3 str.format()的使用
- MySQL 在512M一下内存优化配置
- 数学建模案例【人口模型 】(马尔萨斯人口模型,Logistic模型)
- 【网页开发】登录注册页面01
- 菠萝狗四足机器人使用手册
- docker 问题集
- Arcgis开发系列2 - 修改arcgis infowindow 放大和缩小的模板
- MacBook怎样装Win10 双系统玩转Win10
- Android OpenCV(四十五):图像修复
- torchtext常用函数整理
- 危险!80% 用户正在考虑放弃 Oracle JDK…
热门文章
- Ubuntu16.04下基于ROS控制Robotiq_2f_85_gripper
- 创新云集 携手共赢—— 2018 Oracle NetSuite 中国峰会首度开幕,智驭云端生态未来
- urlRewrite实现网站伪装
- Xcode7如何手动安装模拟器
- 机器学习小组知识点16:指数分布(Exponential Distribution)
- android qq音乐布局,仿QQ音乐底部栏
- 如何在使用验证码识别软件的时候防止出现第三方
- 转一篇网页设计流程的文章(YAH00)
- 微信公众平台天气查询,火车票查询,快递查询,小黄鸡,翻译,公交查询的实现
- [SIM] MT6589 W+G/G+G dual-talk找不到SIM卡2