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';
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iYmFzMmVDO2EGZwUjN3kTO5EmN0ETOhNDZhFzMwczY28CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
資料庫表結構及資料
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 ' 是相等的