utf8mb4 和 utf8 比较

utf8mb4: A UTF-8 encoding of the Unicode character set using one to four bytes per character.

utf8mb3: A UTF-8 encoding of the Unicode character set using one to three bytes per character.

UTF-8是使用1~4个字节,一种变长的编码格式。(字符编码 )

mb4即 most bytes 4,使用4个字节来表示完整的UTF-8。而MySQL中的utf8是utfmb3,只有三个字节,节省空间但不能表达全部的UTF-8,只能支持“基本多文种平面”(Basic Multilingual Plane,BMP)。

推荐使用utf8mb4。

utf8mb4_unicode_ci 和 utf8mb4_general_ci 比较

general_ci 更快,unicode_ci 更准确

in German and some other languages ß is equal to ss.

这种情况unicode_ci能准确判断。

具体有什么差别呢?参见下面的连接。

utf8mb4_general_ci P=p Q=q R=r=Ř=ř S=s=ß=Ś=ś=Ş=ş=Š=š sh ss sz

utf8mb4_unicode_ci P=p Q=q R=r=Ř=ř S=s=Ś=ś=Ş=ş=Š=š sh ss=ß sz

可以看到utf8mb4_general_ci中S=ß,而utf8mb4_unicode_ci中ss=ß 。

使用utf8mb4_bin可以将上面的字符区分开来。

貌似general_ci 也快不了多少,所以更推荐unicode_ci。

大小写敏感

utf8mb4_general_cs 大小写敏感

utf8mb4_bin 大小写敏感

但貌似不存在utf8_unicode_cs ,可能是算法决定的吧?

utf8mb4_bin 列大小写不敏感方法

需求

插入的时候Uman 和Umān和uman 看做不同的单词。

查询的时候Uman 和Umān和uman 都能同时查出来。

解决方案

create table test_utf8_bin_ci

( u8 varchar(50) charset utf8mb4 collate utf8mb4_unicode_ci,

u8_bin_ci varchar(50) charset utf8mb4 collate utf8mb4_bin as (lower(u8)) unique

);

insert into test_utf8_bin_ci (u8)

values ('A'),('Ä'),('Å'),('Â'),('Á'),('À');

根据需求,插入数据时:

Uman 和Umān 看做不同的单词,所以要utf8_bin.

Uman 和 uman看做相同的单词,所以添加unique约束,在utf8_bin区分大小写的情况下,使用low() 函数使其不区分大小写。

查询时:

查询u8列,utf8mb4_unicode_ci不区分大小写、不区分a和ā。都能查出来。

mysql utf8mb4 bin_MySQL中utf8字符集、排序规则及utf8mb4_bin列大小写不敏感方法相关推荐

  1. mysql选择排序规则_关于mysql创建数据库中字符集和排序规则的选择

    1:字符集: 一般 主要选择两种: 1:utf8   (看unicode编码区从1 - 126就属于传统utf8区,),一般都够用,除非需要存储特殊字符 2:utf8mb4(utf8mb4兼容utf8 ...

  2. mysql utf8mb4 bin_Mysql的utf8与utf8mb4区别,utf8mb4_bin、utf8mb4_general_ci与utf8mb4_unicode_ci的选择...

    utf8 与 utf8mb4 标准的 UTF-8 字符集编码是可以用 1~4 个字节去编码21位字符,是一种变长的编码格式,这几乎包含了是世界上所有能看见的语言了.然而在MySQL里实现的utf8最长 ...

  3. mysql utf8mb4 java_mysql中utf8和utf8mb4区别

    一.什么是utf8mb4 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除 ...

  4. MySQL新建数据库|字符集排序规则

    MySQL新建数据库|字符集&排序规则 前言 分析 字符集 utf8mb4和utf8 其他字符集 排序规则 ci结尾 ca结尾 bin结尾 乱序问题 前言 有过新建过的数据库的小伙伴对这张图肯 ...

  5. mysql排序规则错误_MySQL中“非法混合排序规则”错误的疑难解答

    阿波罗的战车 更改字符串的一个(或两者)的排序规则以使它们匹配,或者添加一个COLLATE从句到你的表情.这"校对"到底是什么?如下文所述字符集和排序规则:A 字符集是一组符号和编 ...

  6. mysql 中文字符排序规则_mysql中字符集和排序规则说明

    数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set),每种字符集也有各自的排序规则(Collation). 一.字符集 字符集,即用于定义字符在数据库中的编码的集合. 常见 ...

  7. mysql字符集排序规则_Mysql 字符集及排序规则

    一.字符集 字符集:就是用来定义字符在数据库中的编码的集合. 常见的字符集:utf8.Unicode.GBK.GB2312(支持中文).ASCCI(不支持中文) 二.字符集排序规则 作者本人用的是ut ...

  8. mysql8.0字符集排序规则_MySQL 的字符集与排序规则

    今天突然被同事问到,MySql 里的 uft8 与 utf8mb4 究竟有什么区别,当时我也是一脸问号,因此特地去了解了一下. 字符集 uft8 与 utf8mb4 其实指的是 MySQL 中的字符集 ...

  9. 实施逻辑复制软件时对目的端数据库的字符集(排序规则)的要求

    实施逻辑复制软件时对在目的端数据库的字符集(排序规则)的要求 1.当目的端数据库是Oracle数据库时,务必保证目的端Oracle数据库的字符集与源头Oracle数据库的字符集保持一致. 2.当目的端 ...

最新文章

  1. 阿里前员工跳槽后曝光薪资截图:新公司月入五万多,很满足!
  2. FileReader采用的默认编码
  3. 使用 supervisor 管理进程
  4. spice server dpkg-buildpackage 打包编译备忘
  5. 学业水平考试网登录_学业水平报名网址:http://www.eeagd.edu.cn/xyspbm/
  6. SpringCloud:汇总(Gradle项目)
  7. 证券行业日志审计需求分析,产品选型和实施建议
  8. subprocess模块(了解)
  9. NAS个人云存储服务器搭建
  10. PHOTOSHOP抽出滤镜抠发法(转)
  11. EXP-00091: Exporting questionable statistics. 解决
  12. spring原理面试题总结
  13. 计算机类qq网名,最帅的qq名字
  14. Java混元功法_陈式太极心意混元 入门功法---太极内功 1
  15. Android 测试工具集01
  16. 今天学习腌菜,啦啦啦啦啦
  17. 清洗outliers
  18. nginx安全漏洞(CVE-2021-23017)修复
  19. java jbutton 不可点击_JTable和JButton点击不起作用
  20. 解题记录 LeetCode 下一个更大元素 单调栈

热门文章

  1. 中的listeners_C++中Future和Promise的一种简单实现
  2. python标准输出_Python(2.7)-标准输入输出,标准错误输出
  3. 关于Tomcat的部署
  4. 分布式定时器的实现原理
  5. Linux开机启动过程(6):页表的初始化、避开保留的内存、地址随机化
  6. gc:C语言的垃圾回收库-中文
  7. 注册了Stack Overflow
  8. android文本与布局
  9. **python基础类和对象(十二)
  10. mysql innodb 数据恢复_MYSQL INNODB 数据库恢复 转