MySQL collate的选择
前言
版本说明
mysql=8.0.17
相关链接:
_general_ci 与 _unicode_ci 归类
对于任何Unicode字符集,使用xxx_general_ci 归类执行的操作都比 xxx_unicode_ci 归类中的操作要快。例如, utf8_general_ci归类的比较比的比较更快,但正确性稍差 utf8_unicode_ci。原因是 utf8_unicode_ci支持扩展等映射。
collate 比较
SELECT * FROM INFORMATION_SCHEMA.COLLATIONS WHERE CHARACTER_SET_NAME = 'utf8mb4';
数据库表结构及数据
create database db_test character set utf8mb4; use db_test; create table if not exists `t_test`( `id` int primary key auto_increment, `no_pad` varchar(20) character set utf8mb4 collate utf8mb4_0900_bin, `pad` varchar(20) character set utf8mb4 collate utf8mb4_bin )engine =innodb; insert into t_test(`no_pad`, `pad`) values ('a', 'b '); insert into t_test(`no_pad`, `pad`) values ('a ', 'b '); insert into t_test(`no_pad`, `pad`) values ('a', 'b'); insert into t_test(`no_pad`, `pad`) values ('a ', 'b');
PAD_ATTRIBUTE 比较
- NO PAD :'a' 和 'a ' 是不相等的
- PAD SPACE :'a' 和 'a ' 是相等的