MySQL中utf8mb4排序規則示例

2022-09-21 16:12:11 字數 3568 閱讀 2006

在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也就夠了。二 內容描述 那...