数据由Oracle 迁入MySQL ,由于之前Oracle区分大小写,MySQL的配置使用了默认配置,导致一些数据导入失败,有的唯一键报错,冲突。

将测试过程记录在下面。

数据库版本:MySQL 5.7.11

引用他人博客中内容:

校对规则一般有这些特征:

  • 两个不同的字符集不能有相同的校对规则。

  • 每个字符集有一个默认校对规则。例如,utf8默认校对规则是utf8_general_ci。

  • 存在校对规则命名约定:它们以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束。

查看支持的校验规则:

mysql> SHOW COLLATION like 'utf8%';
+--------------------------+---------+-----+---------+----------+---------+
| Collation                | Charset | Id  | Default | Compiled | Sortlen |
+--------------------------+---------+-----+---------+----------+---------+
| utf8_general_ci          | utf8    |  33 | Yes     | Yes      |       1 |
| utf8_bin                 | utf8    |  83 |         | Yes      |       1 |
| utf8_unicode_ci          | utf8    | 192 |         | Yes      |       8 |
...
| utf8mb4_general_ci       | utf8mb4 |  45 | Yes     | Yes      |       1 |
| utf8mb4_bin              | utf8mb4 |  46 |         | Yes      |       1 |
| utf8mb4_unicode_ci       | utf8mb4 | 224 |         | Yes      |       8 |
| utf8mb4_icelandic_ci     | utf8mb4 | 225 |         | Yes      |       8 |
查看本地的校验规则:
mysql> show global variables like '%coll%';
+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_unicode_ci |
| collation_database   | utf8mb4_unicode_ci |
| collation_server     | utf8mb4_unicode_ci |
+----------------------+--------------------+

生产中数据库使用的编码为utf8mb4, 校验规则为 utf8mb4_unicode_ci,对大小写不敏感

如果需要大小写敏感,需要将排序规则修改为utf8mb4_bin.

测试后结果:修改数据库配置后,不会对已经存在的表造成影响,如要生效需要修改特定列的排序规则。优先级大概是这样:列>表>数据库>服务器

有两种方法使查询区分大小写:

  • 第一种方法为修改列级别的校验规则为utf8mb4_bin

T表

CREATE TABLE `T` (`name` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
mysql> select * from T;
+------+
| name |
+------+
| YOU  |
| You  |
| you  |
| you  |
| yOU  |
+------+

T2表:将列校对规则修改为utf8mb4_bin

CREATE TABLE `T2` (`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
mysql> select * from T2;
+------+
| name |
+------+
| yOU  |
| you  |
+------+

查询:

T:(未区分大小写)

mysql> select * from T where name = 'you';
+------+
| name |
+------+
| YOU  |
| You  |
| you  |
| you  |
| yOU  |
+------+

T2:(已经区分大小写)

mysql> select * from T2 where name = 'you';
+------+
| name |
+------+
| you  |
+------+
  • 第二种方法:  不修改配置,表结构,而使用如下的查询语句:

T:(未修改表)

mysql> select * from T where name = binary'you';
+------+
| name |
+------+
| you  |
| you  |
+------+

转载于:https://blog.51cto.com/amnesiasun/1931489

MySQL 字段内容区分大小写相关推荐

  1. MySql字段内容加密与解密

    AES和DES 对于存储在数据库中的敏感信息,往往需要对其进行加密.MySql提供了多种加密方式,其中两种为AES和DES. 这两种方式用法类似.性能上,AES各方面都略强于DES.因此推荐使用AES ...

  2. Mysql插入中文的字段内容时乱码的解决方法

    Mysql插入中文的字段内容时乱码的解决方法 参考文章: (1)Mysql插入中文的字段内容时乱码的解决方法 (2)https://www.cnblogs.com/charlypage/p/10780 ...

  3. mysql 如何解决字段不区分大小写的问题

    mysql 如何解决字段不区分大小写的问题 参考文章: (1)mysql 如何解决字段不区分大小写的问题 (2)https://www.cnblogs.com/pansidong/p/7991344. ...

  4. mysql字段替换_mysql 替换字段部分内容及mysql 替换函数replace()

    [mysql]replace的用法(替换某字段部分内容) [mysql]replace的用法 1.replace into replace into table (id,name) values('1 ...

  5. Mysql某个字段内容替换(字符串中的一部分内容替换) sql

    Mysql 某个字段内容替换 问题描述: 将某一个字段的数据内容中的一部分替换:如图 数据量大情况下可以进行批量替换会很方便快捷 问题解决 sql函数: INSERT(s1,x,len,s2) 字符串 ...

  6. MySQL命令行导入含空值的orderinfo和userinfo字段内容

    导入背景 在网上找到一个七周成为数据分析师的教学课程,在学到MySQL时,要导入两个很大的表:order_info_utf.csv和user_info_utf.csv,这两个表数据比较多,有几十万条数 ...

  7. MySQL字段值如何区分大小写

    MySQL字段值如何区分大小写 注意:设置的是字段值区分大小写 1. 查询时指定大小写敏感,加关键字'BINARY' (1)删表,建表,新增数据 drop table binary_test; CRE ...

  8. Mysql去除字段内容两边指定字符

    update t_film_info set film_director = trim(BOTH ' ' FROM trim(film_director)) -- 去除字段内容两边指定字符

  9. MySQL 字段数据类型/长度

    分类: 数据库学习2010-09-27 16:30 105人阅读 评论(0) 收藏 举报 一.MySQL 字段数据类型/长度 1.数值类型 列类型              需要的存储量 TINYIN ...

最新文章

  1. 对用户信息的模糊查找java_java中对SQL模糊查询通配符%的处理
  2. 如何取消linux响铃_linux初学者入门:VIM编辑简易指南(常用操作)
  3. 纪念逝去的头发--一次debug经历
  4. CMakeListx.txt 编辑语法学习
  5. 死磕18个Java8日期处理,工作必用!
  6. 全国计算机一级考试介绍难不难,全国计算机一级考试内容 计算机一级考试难吗...
  7. (学习日记)关于a1,a2,a3,...,an共n个元素依次入栈其可能出栈的排列数的计算(catalan数)...
  8. 计算机网络|UDP用户数据报服务
  9. android go 刷机教程,安卓用的久了,如何刷机?安卓手机线刷教程
  10. innodb_lru_scan_depth
  11. es java 模糊查询_java使用elasticsearch进行模糊查询
  12. 掌握 Microsoft Excel 宏和 Excel VBA
  13. 问答题库(路由与交换){简答版}
  14. 按条件爬取百度百科词条及其相关词条的ID
  15. maven(2)——修改maven的setting.xml文件,更改下载地址和镜像
  16. 整理:.NET 性能优化方法总结
  17. 电商系统常用的产品颜色,尺码选择JS程序实现
  18. Java兔子生兔子问题
  19. cardboard的使用
  20. vertex系列芯片和zynq系列芯片结构的异同_使用ZYNQ实现复杂嵌入式系统,真的好用!...

热门文章

  1. python中int input_关于python:如何接受int和float类型的输入?
  2. 柱形图无数据可选中_Excel---多层柱形图来了!让领导看呆
  3. 测试方案_在线式UPS电源测试方案
  4. 接收不到其他机器发来的报文_TCP/IP报文格式,康康就知道了
  5. vue element form 自定义校验1(表单校验)
  6. vue element form 默认校验
  7. mybatis parameterType
  8. python 保留的类标识符
  9. scrapy commandline
  10. arcgis select by attributes一次选多个_优化体系--记一次生产数据库sql优化过程--组合索引...