0%

Mysql 8 中的新的Collation (字符校对)

简介

在使用Docker玩mysql 8.0时,发现默认的character collation变成了不认识的utf8mb4_0900_ai_ci,对相应问题做了一点搜索,记录如下。

说明

utf8mb4_0900_ai_ci为例,它是一个若干有意义的字段合并的collation名称。分解如下:

  • uft8mb4 指使用UTF-8字符集,每个字符最多使用4 byte来存储。
  • 0900 指Unicode字符校对算法版本。Unicode字符校对算法(Unicode Collation Algorithm) 是用来按照Unicode标准比较两个字符串的算法。
  • ai 指重音符号(Accent)不敏感,比如 e, è, é, ê and ë 在排序时均认为是同一字符。与其相对的是as
  • ci 指大小写(Case)不敏感。排序时a和A不做区分。与其相对的是 as

其他还有language identifer以及_bin标识,可以参考如下网站

Collation Naming Conventions

New Colllations in Mysql 8

展示所有Collation

1
SHOW COLLATION

如何确定当前表的Collation?

可以查询information_schema表

1
2
3
4
5
SELECT 
table_schema,
table_name,
table_collation
FROM information_schema.tables

Welcome to my other publishing channels