mysql 中字段的 collate 和 charset 有什么区别

在 MySQL 中,COLLATE 和 CHARSET 是用来设置字符集和排序规则的参数。

CHARSET 用于设置字符集,字符集是用于编码字符的规则集。常用的字符集包括 utf8 和 utf8mb4,分别用于编码普通的文本和包含 Emoji 等特殊字符的文本。

COLLATE 用于设置排序规则,排序规则是用于比较和排序字符的规则集。常用的排序规则包括 utf8_general_ci 和 utf8mb4_unicode_ci,分别用于不区分大小写的比较和区分大小写的比较。

例如,在创建表时,可以使用 CHARSET=utf8mb4 和 COLLATE=utf8mb4_unicode_ci 参数,来设置表的字符集为 utf8mb4,排序规则为区分大小写的比较。

示例代码:

CREATE TABLE table_name ( column1 VARCHAR(255) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci ); 

在上面的代码中,列 column1 的字符集设置为 utf8mb4,排序规则设置为区分大小写的比较。

需要注意,在 MySQL 中,字符集和排序规则是分开设置的,所以需要同时指定字符集和排序规则才能正确处理字符。

常见的排序规则(COLLATE)包括

utf8_general_ci:不区分大小写的比较。
utf8_unicode_ci:区分大小写的比较。
utf8mb4_general_ci:不区分大小写的比较,支持 Emoji 等特殊字符。
utf8mb4_unicode_ci:区分大小写的比较,支持 Emoji 等特殊字符。
在 MySQL 中,排序规则是与字符集一起设置的,所以在使用排序规则时需要同时指定字符集。

作者:戴马师原文地址:https://segmentfault.com/a/1190000043342478

%s 个评论

要回复文章请先登录注册