天天看點

MySQL collate的選擇

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';      
MySQL collate的選擇
MySQL collate的選擇
MySQL collate的選擇
MySQL collate的選擇
MySQL collate的選擇

資料庫表結構及資料

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 ' 是相等的