MYSQL中有关的字符编码问题
通常我们建表时候会有如下语句:
CREATE TABLE `table` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`field1` text COLLATE utf8_unicode_ci NOT NULL COMMENT '字段1',
`field2` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '字段2',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8_unicode_ci;
即会出现 CHARSET 与COLLATE ,那么他们分别代表的是什么呢? 先给出结论:
- CHARSET 字符集设置
- COLLATE 字符字段排序规则
COLLATE 字符字段排序规则,会影响 DISTINCT、GROUP BY、HAVING语句的查询结果
一般情况CHARSET 都有一个默认的 COLLATE. 即,字符集都有一个默认的规则,如:
CHARSET | 默认COLLATE |
---|---|
Latin1 | latin1_swedish_ci |
GBK | gbk_chinese_ci |
utf8mb4 | utf8mb4_general_ci |
下面介绍一下 COLLATE 值的规则:
- _ci 后缀 是 Case Insensitive 的缩写,即: 大小写不敏感的,体现为大写和小写会在排序筛选中相同
- _cs 后缀 是 Case Sensitive 的缩写,即: 大小写敏感的,体现为大写和小写在排序筛选中会不相同
参考文献:
https://cloud.tencent.com/developer/article/1366841
最后更新于 2020-04-30 08:15:22 并被添加「」标签,已有 2797 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处