在mysql中常見的utf8mb4排序規則有:
當設定表的預設字符集為utf8mb4字符集但未明確指定排序規則時:
由於utf8mb4_0900_ai_ci排序規則時mysql 8.0引入的排序規則,因此將mysql 8.0版本的表匯入到mysql 5.7或mysql 5.6版本時,會存在字符集無法識別的問題。
[err] 1273 - unknown collation: 'utf8mb4_0900_ai_ci'
在mysql 5.6版本中,引數collation_server用於設定伺服器級別的預設排序規則。
引數character_set_database和collation_database在mysql 5.7版本中被遺棄並將在後續版本中移除。
mysql新增引數default_collation_for_utf8mb4用於控制使用utf8mb4字符集時的預設排序規則,取值為utf8mb4_0900_ai_ci或utf8mb4_general_ci
引數default_collation_for_utf8mb4在下列條件中生效:
1、準確性
2、效能
測試指令碼
## 刪除測試表
drop table if exists tb2001;
drop table if exists tb2002;
drop table if exists tb2003;
## 建立測試表
create table tb2001(
id int auto_increment primary key,
c1 varchar(100) collate utf8mb4_unicode_ci,
c2 varchar(100) collate utf8mb4_bin
)engine=innodb default charset=utf8mb4 ;
create table tb2002(
id int auto_increment primary key,
c1 varchar(100) collate utf8mb4_general_ci,
c2 varchar(100) collate utf8mb4_bin
)engine=innodb default charset=utf8mb4;
create table tb2003(
id int auto_increment primary key,
c1 varchar(100) collate utf8mb4_0900_ai_ci,
c2 varchar(100) collate utf8mb4_bin
)eng程式設計客棧ine=innodb default charset=utf8mb4;
## 插入測試資料
insert into tb2001(c1,c2)values(0xf09f8d8程式設計客棧3,0xf09f8d83),(0xf09fa68a,0xf09fa68a),(0xf09f8ca0,0xf09f8ca0);
insert into tb2002(c1,c2)values(0xf09f8d83,0xf09f8d83),(0xf09fa68a,0xf09fa68a),(0xf09f8ca0,0xf09f8ca0);
insert into tb2003(c1,c2)values(0xf09f8d83,0xf09f8d83),(0xf09fa68a,0xf09fa68a),(0xf09f8ca0,0xf09f8ca0);
## 等值查詢測試
select * from tb2001 whwww.cppcns.comere c1=0xf09f8d83;
select * from tb2002 where c1=0xf09f8d83;
select * from tb2003 where c1=0xf09f8d83;
select * from tb2001 where c2=0xf09f8d83;
select * from tb2002 where c2=0xf09f8d83;
select * from tb2003 where c2=0xf09f8d83;
測試結果
mysql> select * from tb2001 where c1=0xf09f8d83;
+----+------+------+
| id | c1 | c2 |
+----+------+------+
| 1 |
MySQL中utf8和utf8mb4編碼格式的區別
一 簡介 mysql在5.5.3之後增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來相容四位元組的unicode。好在utf8mb4是utf8的超集,除了將編碼改為utf8mb4外不需要做其他轉換。當然,為了節省空間,一般情況下使用utf8也就夠了。二 內容描述 既...
mysql修改 utf8mb4編碼
1.修改資料庫的編碼 將資料庫 test 的編碼方式修改為 utf8 如 alter database test defaultcharacter set utf8 collate utf8 bin 2.修改表的編碼 將表 test 的編碼方式修改為 utf8 如 alter table test ...
MySQL中utf8和utf8mb4的區別
一 簡介 mysql在5.5.3之後增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來相容四位元組的unicode。好在utf8mb4是utf8的超集,除了將編碼改為utf8mb4外不需要做其他轉換。當然,為了節省空間,一般情況下使用utf8也就夠了。二 內容描述 那...