diff --git a/TOC.md b/TOC.md index c6c58dd9a5d1..626cbdd1c9fe 100644 --- a/TOC.md +++ b/TOC.md @@ -1006,6 +1006,7 @@ - 字符集和排序规则 - [概述](/character-set-and-collation.md) - [GBK](/character-set-gbk.md) + - [GB18030](/character-set-gb18030.md) - [Placement Rules in SQL](/placement-rules-in-sql.md) - 系统表 - `mysql` Schema diff --git a/br/backup-and-restore-overview.md b/br/backup-and-restore-overview.md index 967827f31342..a999e5b207c0 100644 --- a/br/backup-and-restore-overview.md +++ b/br/backup-and-restore-overview.md @@ -115,6 +115,7 @@ TiDB 支持将数据备份到 Amazon S3、Google Cloud Storage (GCS)、Azure Blo | 功能 | 相关 issue | 解决方式 | | ---- | ---- | ----- | |GBK charset|| BR 在 v5.4.0 之前不支持恢复 `charset=GBK` 的表。并且,任何版本的 BR 都不支持恢复 `charset=GBK` 的表到 v5.4.0 之前的 TiDB 集群。| +|GB18030 charset|| BR 在 v9.0.0 之前不支持恢复 `charset=GB18030` 的表。并且,任何版本的 BR 都不支持恢复 `charset=GB18030` 的表到 v9.0.0 之前的 TiDB 集群。| | 聚簇索引 | [#565](https://github.com/pingcap/br/issues/565) | 确保恢复时集群的 `tidb_enable_clustered_index` 全局变量和备份时一致,否则会导致数据不一致的问题,例如 `default not found` 和数据索引不一致。 | | New collation | [#352](https://github.com/pingcap/br/issues/352) | 确保恢复时集群的 `mysql.tidb` 表中 `new_collation_enabled` 变量值和备份时的一致,否则会导致数据索引不一致和 checksum 通不过。更多信息,请参考 [FAQ - BR 为什么会报 `new_collations_enabled_on_first_bootstrap` 不匹配?](/faq/backup-and-restore-faq.md#恢复时为什么会报-new_collation_enabled-不匹配)。 | | 全局临时表 | | 确保使用 BR v5.3.0 及以上版本进行备份和恢复,否则会导致全局临时表的表定义错误。 | diff --git a/character-set-and-collation.md b/character-set-and-collation.md index c1aac7b8f064..ac6a77540be7 100644 --- a/character-set-and-collation.md +++ b/character-set-and-collation.md @@ -1,7 +1,7 @@ --- title: 字符集和排序规则 aliases: ['/docs-cn/dev/character-set-and-collation/','/docs-cn/dev/reference/sql/characterset-and-collation/','/docs-cn/dev/reference/sql/character-set/'] -summary: TiDB 支持的字符集包括 ascii、binary、gbk、latin1、utf8 和 utf8mb4。排序规则包括 ascii_bin、binary、gbk_bin、gbk_chinese_ci、latin1_bin、utf8_bin、utf8_general_ci、utf8_unicode_ci、utf8mb4_0900_ai_ci、utf8mb4_0900_bin、utf8mb4_bin、utf8mb4_general_ci 和 utf8mb4_unicode_ci。TiDB 强烈建议使用 utf8mb4 字符集,因为它支持更多字符。在 TiDB 中,默认的排序规则受到客户端的连接排序规则设置的影响。如果客户端使用 utf8mb4_0900_ai_ci 作为连接排序规则,TiDB 将遵循客户端的配置。TiDB 还支持新的排序规则框架,用于在语义上支持不同的排序规则。 +summary: 了解 TiDB 支持的字符集和排序规则。 --- # 字符集和排序规则 @@ -99,17 +99,18 @@ SHOW CHARACTER SET; ``` ``` -+---------+-------------------------------------+-------------------+--------+ -| Charset | Description | Default collation | Maxlen | -+---------+-------------------------------------+-------------------+--------+ -| ascii | US ASCII | ascii_bin | 1 | -| binary | binary | binary | 1 | -| gbk | Chinese Internal Code Specification | gbk_chinese_ci | 2 | -| latin1 | Latin1 | latin1_bin | 1 | -| utf8 | UTF-8 Unicode | utf8_bin | 3 | -| utf8mb4 | UTF-8 Unicode | utf8mb4_bin | 4 | -+---------+-------------------------------------+-------------------+--------+ -6 rows in set (0.00 sec) ++---------+-------------------------------------+--------------------+--------+ +| Charset | Description | Default collation | Maxlen | ++---------+-------------------------------------+--------------------+--------+ +| ascii | US ASCII | ascii_bin | 1 | +| binary | binary | binary | 1 | +| gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 | +| gbk | Chinese Internal Code Specification | gbk_chinese_ci | 2 | +| latin1 | Latin1 | latin1_bin | 1 | +| utf8 | UTF-8 Unicode | utf8_bin | 3 | +| utf8mb4 | UTF-8 Unicode | utf8mb4_bin | 4 | ++---------+-------------------------------------+--------------------+--------+ +7 rows in set (0.000 sec) ``` TiDB 支持以下排序规则: @@ -124,6 +125,8 @@ SHOW COLLATION; +--------------------+---------+-----+---------+----------+---------+---------------+ | ascii_bin | ascii | 65 | Yes | Yes | 1 | PAD SPACE | | binary | binary | 63 | Yes | Yes | 1 | NO PAD | +| gb18030_bin | gb18030 | 249 | | Yes | 1 | PAD SPACE | +| gb18030_chinese_ci | gb18030 | 248 | Yes | Yes | 1 | PAD SPACE | | gbk_bin | gbk | 87 | | Yes | 1 | PAD SPACE | | gbk_chinese_ci | gbk | 28 | Yes | Yes | 1 | PAD SPACE | | latin1_bin | latin1 | 47 | Yes | Yes | 1 | PAD SPACE | @@ -136,7 +139,7 @@ SHOW COLLATION; | utf8mb4_general_ci | utf8mb4 | 45 | | Yes | 1 | PAD SPACE | | utf8mb4_unicode_ci | utf8mb4 | 224 | | Yes | 8 | PAD SPACE | +--------------------+---------+-----+---------+----------+---------+---------------+ -13 rows in set (0.00 sec) +15 rows in set (0.000 sec) ``` > **警告:** @@ -170,7 +173,7 @@ SHOW COLLATION WHERE Charset = 'utf8mb4'; 5 rows in set (0.001 sec) ``` -TiDB 对 GBK 字符集的支持详情见 [GBK](/character-set-gbk.md)。 +TiDB 对 GBK 字符集的支持详情参见 [GBK 字符集](/character-set-gbk.md),对 GB18030 字符集的支持详情参见 [GB18030 字符集](/character-set-gb18030.md)。 ## TiDB 中的 `utf8` 和 `utf8mb4` @@ -519,9 +522,9 @@ SELECT VARIABLE_VALUE FROM mysql.tidb WHERE VARIABLE_NAME='new_collation_enabled 1 row in set (0.00 sec) ``` -在新的排序规则框架下,TiDB 能够支持 `utf8_general_ci`、`utf8mb4_general_ci`、`utf8_unicode_ci`、`utf8mb4_unicode_ci`、`utf8mb4_0900_bin`、`utf8mb4_0900_ai_ci`、`gbk_chinese_ci` 和 `gbk_bin` 这几种排序规则,与 MySQL 兼容。 +在新的排序规则框架下,TiDB 能够支持 `utf8_general_ci`、`utf8mb4_general_ci`、`utf8_unicode_ci`、`utf8mb4_unicode_ci`、`utf8mb4_0900_bin`、`utf8mb4_0900_ai_ci`、`gbk_chinese_ci`、`gbk_bin`、`gb18030_chinese_ci` 和 `gb18030_bin` 这几种排序规则,与 MySQL 兼容。 -使用 `utf8_general_ci`、`utf8mb4_general_ci`、`utf8_unicode_ci`、`utf8mb4_unicode_ci`、`utf8mb4_0900_ai_ci` 和 `gbk_chinese_ci` 中任一种时,字符串之间的比较是大小写不敏感 (case-insensitive) 和口音不敏感 (accent-insensitive) 的。同时,TiDB 还修正了排序规则的 `PADDING` 行为: +使用 `utf8_general_ci`、`utf8mb4_general_ci`、`utf8_unicode_ci`、`utf8mb4_unicode_ci`、`utf8mb4_0900_ai_ci`、`gbk_chinese_ci` 和 `gb18030_chinese_ci` 中任一种时,字符串之间的比较是大小写不敏感 (case-insensitive) 和口音不敏感 (accent-insensitive) 的。同时,TiDB 还修正了排序规则的 `PADDING` 行为: ```sql CREATE TABLE t(a varchar(20) charset utf8mb4 collate utf8mb4_general_ci PRIMARY KEY); diff --git a/character-set-gb18030.md b/character-set-gb18030.md new file mode 100644 index 000000000000..173372791b25 --- /dev/null +++ b/character-set-gb18030.md @@ -0,0 +1,111 @@ +--- +title: GB18030 字符集 +summary: 本文介绍 TiDB 对 GB18030 字符集的支持情况。 +--- + +# GB18030 字符集 + +TiDB 从 v9.0.0 开始支持 GB18030-2022 字符集。本文档介绍 TiDB 对 GB18030 字符集的支持和兼容情况。 + +```sql +SHOW CHARACTER SET WHERE CHARSET = 'gb18030'; +``` + +``` ++---------+---------------------------------+--------------------+--------+ +| Charset | Description | Default collation | Maxlen | ++---------+---------------------------------+--------------------+--------+ +| gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 | ++---------+---------------------------------+--------------------+--------+ +1 row in set (0.01 sec) +``` + +```sql +SHOW COLLATION WHERE CHARSET = 'gb18030'; +``` + +``` ++--------------------+---------+-----+---------+----------+---------+---------------+ +| Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | ++--------------------+---------+-----+---------+----------+---------+---------------+ +| gb18030_bin | gb18030 | 249 | | Yes | 1 | PAD SPACE | +| gb18030_chinese_ci | gb18030 | 248 | Yes | Yes | 1 | PAD SPACE | ++--------------------+---------+-----+---------+----------+---------+---------------+ +2 rows in set (0.001 sec) +``` + +## 与 MySQL 的兼容性 + +本节介绍 TiDB 中 GB18030 字符集与 MySQL 的兼容情况。 + +### 排序规则兼容性 + +MySQL 的 GB18030 字符集默认排序规则是 `gb18030_chinese_ci`。TiDB 的 GB18030 字符集的默认排序规则取决于 TiDB 配置项 [`new_collations_enabled_on_first_bootstrap`](/tidb-configuration-file.md#new_collations_enabled_on_first_bootstrap) 的值: + +- 默认情况下,TiDB 配置项 `new_collations_enabled_on_first_bootstrap` 为 `true`,表示开启[新的排序规则框架](/character-set-and-collation.md#新框架下的排序规则支持)。此时,GB18030 字符集的默认排序规则是 `gb18030_chinese_ci`。 +- 当 TiDB 配置项 `new_collations_enabled_on_first_bootstrap` 为 `false` 时,表示关闭新的排序规则框架,GB18030 字符集的默认排序规则是 `gb18030_bin`。 + +另外,TiDB 支持的 `gb18030_bin` 与 MySQL 支持的 `gb18030_bin` 排序规则也不一致,TiDB 是将 GB18030 转换成 `utf8mb4`,然后再进行二进制排序。 + +开启新的排序规则框架后,如果查看 GB18030 字符集对应的排序规则,你可以看到 TiDB GB18030 默认排序规则已经切换为 `gb18030_chinese_ci`: + +```sql +SHOW CHARACTER SET WHERE CHARSET = 'gb18030'; +``` + +``` ++---------+---------------------------------+--------------------+--------+ +| Charset | Description | Default collation | Maxlen | ++---------+---------------------------------+--------------------+--------+ +| gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 | ++---------+---------------------------------+--------------------+--------+ +1 row in set (0.01 sec) +``` + +```sql +SHOW COLLATION WHERE CHARSET = 'gb18030'; +``` + +``` ++--------------------+---------+-----+---------+----------+---------+---------------+ +| Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | ++--------------------+---------+-----+---------+----------+---------+---------------+ +| gb18030_bin | gb18030 | 249 | | Yes | 1 | PAD SPACE | +| gb18030_chinese_ci | gb18030 | 248 | Yes | Yes | 1 | PAD SPACE | ++--------------------+---------+-----+---------+----------+---------+---------------+ +2 rows in set (0.00 sec) +``` + +### 字符兼容性 + +- TiDB 支持 GB18030-2022 的字符,MySQL 支持 GB18030-2005 的字符,因此部分字符的编解码结果不同。 + +- 对于非法的 GB18030 字符,比如 `0xFE39FE39`,MySQL 支持以 16 进制的方式写入数据库中,并保存为 `?`。TiDB 在严格模式下读写非法 GB18030 字符都会报错;在非严格模式下,TiDB 允许读写非法 GB18030 字符但会返回警告。 + +### 其它 + +* 目前 TiDB 不支持通过 `ALTER TABLE` 语句将其它字符集类型改成 `gb18030` 或者从 `gb18030` 转成其它字符集类型。 + +* TiDB 不支持使用 `_gb18030` 字符集引导符。例如: + + ```sql + CREATE TABLE t(a CHAR(10) CHARSET BINARY); + Query OK, 0 rows affected (0.00 sec) + INSERT INTO t VALUES (_gb18030'啊'); + ERROR 1115 (42000): Unsupported character introducer: 'gb18030' + ``` + +* 对于 `ENUM` 和 `SET` 类型中的二进制字符,TiDB 目前都会将其作为 `utf8mb4` 字符集处理。 + +## 组件兼容性 + +* TiFlash、TiDB Data Migration (DM) 和 TiCDC 目前不支持 GB18030 字符集。 + +* 在 v9.0.0 之前,Dumpling 不支持导出 `charset=GB18030` 的表,TiDB Lightning 不支持导入 `charset=GB18030` 的表。 + +* 在 v9.0.0 之前,TiDB Backup & Restore(BR)不支持备份恢复 `charset=GB18030` 的表。另外,任何版本的 BR 都不支持恢复 `charset=GB18030` 的表到 v9.0.0 之前的 TiDB 集群。 + +## 另请参阅 + +* [`SHOW CHARACTER SET`](/sql-statements/sql-statement-show-character-set.md) +* [字符集和排序规则](/character-set-and-collation.md) diff --git a/character-set-gbk.md b/character-set-gbk.md index 28c072d44f8e..fca48f953c35 100644 --- a/character-set-gbk.md +++ b/character-set-gbk.md @@ -1,14 +1,12 @@ --- -title: GBK +title: GBK 字符集 summary: 本文介绍 TiDB 对 GBK 字符集的支持情况。 --- -# GBK +# GBK 字符集 TiDB 从 v5.4.0 开始支持 GBK 字符集。本文档介绍 TiDB 对 GBK 字符集的支持和兼容情况。 -从 TiDB v6.0.0 开始,[新的排序规则框架](/character-set-and-collation.md#新框架下的排序规则支持)默认启用,即 TiDB GBK 字符集的默认排序规则为 `gbk_chinese_ci`,与 MySQL 保持一致。 - ```sql SHOW CHARACTER SET WHERE CHARSET = 'gbk'; ``` @@ -17,23 +15,20 @@ SHOW CHARACTER SET WHERE CHARSET = 'gbk'; +---------+-------------------------------------+-------------------+--------+ | Charset | Description | Default collation | Maxlen | +---------+-------------------------------------+-------------------+--------+ -| gbk | Chinese Internal Code Specification | gbk_chinese_ci | 2 | +| gbk | Chinese Internal Code Specification | gbk_bin | 2 | +---------+-------------------------------------+-------------------+--------+ 1 row in set (0.00 sec) ``` ```sql SHOW COLLATION WHERE CHARSET = 'gbk'; -``` - -``` +----------------+---------+----+---------+----------+---------+---------------+ | Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | +----------------+---------+----+---------+----------+---------+---------------+ | gbk_bin | gbk | 87 | | Yes | 1 | PAD SPACE | | gbk_chinese_ci | gbk | 28 | Yes | Yes | 1 | PAD SPACE | +----------------+---------+----+---------+----------+---------+---------------+ -2 rows in set (0.00 sec) +2 rows in set (0.001 sec) ``` ## 与 MySQL 的兼容性 @@ -47,7 +42,38 @@ MySQL 的 GBK 字符集默认排序规则是 `gbk_chinese_ci`。TiDB 的 GBK 字 - 默认情况下,TiDB 配置项 [`new_collations_enabled_on_first_bootstrap`](/tidb-configuration-file.md#new_collations_enabled_on_first_bootstrap) 为 `true`,表示开启[新的排序规则框架](/character-set-and-collation.md#新框架下的排序规则支持)。GBK 字符集的默认排序规则是 `gbk_chinese_ci`。 - 当 TiDB 配置项 [`new_collations_enabled_on_first_bootstrap`](/tidb-configuration-file.md#new_collations_enabled_on_first_bootstrap) 为 `false` 时,表示关闭新的排序规则框架,GBK 字符集的默认排序规则是 `gbk_bin`。 -另外,TiDB 支持的 `gbk_bin` 与 MySQL 支持的 `gbk_bin` 排序规则不一致,TiDB 是将 GBK 转换成 `utf8mb4`,然后再进行二进制排序。 +另外,TiDB 支持的 `gbk_bin` 与 MySQL 支持的 `gbk_bin` 排序规则也不一致,TiDB 是将 GBK 转换成 `utf8mb4`,然后再进行二进制排序。 + +开启[新的排序规则框架](/character-set-and-collation.md#新框架下的排序规则支持)后,如果查看 GBK 字符集对应的排序规则,你可以看到 TiDB GBK 默认排序规则已经切换为 `gbk_chinese_ci`。 + +从 TiDB v6.0.0 开始,新的排序规则框架默认启用,即 TiDB GBK 字符集的默认排序规则为 `gbk_chinese_ci`,与 MySQL 保持一致。 + +```sql +SHOW CHARACTER SET WHERE CHARSET = 'gbk'; +``` + +``` ++---------+-------------------------------------+-------------------+--------+ +| Charset | Description | Default collation | Maxlen | ++---------+-------------------------------------+-------------------+--------+ +| gbk | Chinese Internal Code Specification | gbk_chinese_ci | 2 | ++---------+-------------------------------------+-------------------+--------+ +1 row in set (0.00 sec) +``` + +```sql +SHOW COLLATION WHERE CHARSET = 'gbk'; +``` + +``` ++----------------+---------+----+---------+----------+---------+---------------+ +| Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | ++----------------+---------+----+---------+----------+---------+---------------+ +| gbk_bin | gbk | 87 | | Yes | 1 | PAD SPACE | +| gbk_chinese_ci | gbk | 28 | Yes | Yes | 1 | PAD SPACE | ++----------------+---------+----+---------+----------+---------+---------------+ +2 rows in set (0.001 sec) +``` ### 非法字符兼容性 diff --git a/dm/dm-overview.md b/dm/dm-overview.md index dcb0984122a1..9be1eaed239e 100644 --- a/dm/dm-overview.md +++ b/dm/dm-overview.md @@ -52,9 +52,9 @@ tiup install dm dmctl - DM 不会将视图的 DDL 语句同步到下游的 TiDB 集群,也不会将针对视图的 DML 语句同步到下游。在该场景下,建议用户在下游 TiDB 集群中自行创建视图。 -+ GBK 字符集兼容性限制 ++ GBK 和 GB18030 字符集兼容性限制 - - DM 在 v5.4.0 之前不支持将 `charset=GBK` 的表迁移到 TiDB。 + - DM 在 v5.4.0 之前不支持将 `charset=GBK` 的表迁移到 TiDB,在 v9.0.0 之前不支持将 `charset=GB18030` 的表迁移到 TiDB。 + Binlog 兼容性限制 diff --git a/information-schema/information-schema-character-sets.md b/information-schema/information-schema-character-sets.md index 2f92cd4ad367..20574e3e4b70 100644 --- a/information-schema/information-schema-character-sets.md +++ b/information-schema/information-schema-character-sets.md @@ -40,12 +40,13 @@ SELECT * FROM `CHARACTER_SETS`; +--------------------+----------------------+-------------------------------------+--------+ | ascii | ascii_bin | US ASCII | 1 | | binary | binary | binary | 1 | +| gb18030 | gb18030_chinese_ci | China National Standard GB18030 | 4 | | gbk | gbk_chinese_ci | Chinese Internal Code Specification | 2 | | latin1 | latin1_bin | Latin1 | 1 | | utf8 | utf8_bin | UTF-8 Unicode | 3 | | utf8mb4 | utf8mb4_bin | UTF-8 Unicode | 4 | +--------------------+----------------------+-------------------------------------+--------+ -6 rows in set (0.00 sec) +7 rows in set (0.00 sec) ``` `CHARACTER_SETS` 表中列的含义如下: diff --git a/migrate-from-mariadb.md b/migrate-from-mariadb.md index a651d3c64487..f49a17e81b9a 100644 --- a/migrate-from-mariadb.md +++ b/migrate-from-mariadb.md @@ -192,12 +192,14 @@ TiDB 不支持 MariaDB 中常用的 `latin1_swedish_ci` 排序规则。 SHOW COLLATION; ``` -``` +```sql +--------------------+---------+-----+---------+----------+---------+---------------+ | Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | +--------------------+---------+-----+---------+----------+---------+---------------+ | ascii_bin | ascii | 65 | Yes | Yes | 1 | PAD SPACE | | binary | binary | 63 | Yes | Yes | 1 | NO PAD | +| gb18030_bin | gb18030 | 249 | | Yes | 1 | PAD SPACE | +| gb18030_chinese_ci | gb18030 | 248 | Yes | Yes | 1 | PAD SPACE | | gbk_bin | gbk | 87 | | Yes | 1 | PAD SPACE | | gbk_chinese_ci | gbk | 28 | Yes | Yes | 1 | PAD SPACE | | latin1_bin | latin1 | 47 | Yes | Yes | 1 | PAD SPACE | @@ -210,7 +212,7 @@ SHOW COLLATION; | utf8mb4_general_ci | utf8mb4 | 45 | | Yes | 1 | PAD SPACE | | utf8mb4_unicode_ci | utf8mb4 | 224 | | Yes | 8 | PAD SPACE | +--------------------+---------+-----+---------+----------+---------+---------------+ -13 rows in set (0.00 sec) +15 rows in set (0.000 sec) ``` 执行下列语句检查当前表的列使用的排序规则: diff --git a/mysql-compatibility.md b/mysql-compatibility.md index 60cde5c3bf69..e9a24ddc3780 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -31,7 +31,7 @@ TiDB 高度兼容 MySQL 协议,以及 MySQL 5.7 和 MySQL 8.0 常用的功能 * 自定义函数 * 全文语法与索引 [#1793](https://github.com/pingcap/tidb/issues/1793) * 空间类型的函数(即 `GIS`/`GEOMETRY`)、数据类型和索引 [#6347](https://github.com/pingcap/tidb/issues/6347) -* 非 `ascii`、`latin1`、`binary`、`utf8`、`utf8mb4`、`gbk` 的字符集 +* 非 `ascii`、`latin1`、`binary`、`utf8`、`utf8mb4`、`gbk`、`gb18030` 的字符集 * MySQL 追踪优化器 * XML 函数 * X-Protocol [#1109](https://github.com/pingcap/tidb/issues/1109) @@ -167,6 +167,8 @@ TiDB 中的视图不可更新,不支持 `UPDATE`、`INSERT`、`DELETE` 等写 * 关于 GBK 字符集与 MySQL 的兼容情况,详见 [GBK 兼容情况](/character-set-gbk.md#与-mysql-的兼容性)。 +* 关于 GB18030 字符集与 MySQL 的兼容情况,详见 [GB18030 与 MySQL 的兼容性](/character-set-gb18030.md#与-mysql-的兼容性)。 + * TiDB 继承表中使用的字符集作为国家字符集。 ### 存储引擎 diff --git a/sql-statements/sql-statement-show-collation.md b/sql-statements/sql-statement-show-collation.md index e25c91b456a7..add1aeb936b0 100644 --- a/sql-statements/sql-statement-show-collation.md +++ b/sql-statements/sql-statement-show-collation.md @@ -25,7 +25,10 @@ ShowLikeOrWhere ::= ## 示例 -如果启用了[新排序规则框架](/tidb-configuration-file.md#new_collations_enabled_on_first_bootstrap)(默认启用),输出如下: +如果启用了[新的排序规则框架](/tidb-configuration-file.md#new_collations_enabled_on_first_bootstrap),则除二进制排序规则外,TiDB 还支持以下排序规则: + +* 7 种大小写和口音不敏感的排序规则,以 `_ci` 结尾 +* `utf8mb4_0900_bin` ```sql SHOW COLLATION; @@ -37,6 +40,8 @@ SHOW COLLATION; +--------------------+---------+-----+---------+----------+---------+---------------+ | ascii_bin | ascii | 65 | Yes | Yes | 1 | PAD SPACE | | binary | binary | 63 | Yes | Yes | 1 | NO PAD | +| gb18030_bin | gb18030 | 249 | | Yes | 1 | PAD SPACE | +| gb18030_chinese_ci | gb18030 | 248 | Yes | Yes | 1 | PAD SPACE | | gbk_bin | gbk | 87 | | Yes | 1 | PAD SPACE | | gbk_chinese_ci | gbk | 28 | Yes | Yes | 1 | PAD SPACE | | latin1_bin | latin1 | 47 | Yes | Yes | 1 | PAD SPACE | @@ -49,7 +54,7 @@ SHOW COLLATION; | utf8mb4_general_ci | utf8mb4 | 45 | | Yes | 1 | PAD SPACE | | utf8mb4_unicode_ci | utf8mb4 | 224 | | Yes | 8 | PAD SPACE | +--------------------+---------+-----+---------+----------+---------+---------------+ -13 rows in set (0.00 sec) +15 rows in set (0.000 sec) ``` 若未开启新排序规则框架,仅展示二进制排序规则: @@ -58,18 +63,19 @@ SHOW COLLATION; SHOW COLLATION; ``` -```sql -+-------------+---------+----+---------+----------+---------+---------------+ -| Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | -+-------------+---------+----+---------+----------+---------+---------------+ -| utf8mb4_bin | utf8mb4 | 46 | Yes | Yes | 1 | PAD SPACE | -| latin1_bin | latin1 | 47 | Yes | Yes | 1 | PAD SPACE | -| binary | binary | 63 | Yes | Yes | 1 | NO PAD | -| ascii_bin | ascii | 65 | Yes | Yes | 1 | PAD SPACE | -| utf8_bin | utf8 | 83 | Yes | Yes | 1 | PAD SPACE | -| gbk_bin | gbk | 87 | Yes | Yes | 1 | PAD SPACE | -+-------------+---------+----+---------+----------+---------+---------------+ -6 rows in set (0.00 sec) +``` ++-------------+---------+-----+---------+----------+---------+---------------+ +| Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | ++-------------+---------+-----+---------+----------+---------+---------------+ +| utf8mb4_bin | utf8mb4 | 46 | Yes | Yes | 1 | PAD SPACE | +| latin1_bin | latin1 | 47 | Yes | Yes | 1 | PAD SPACE | +| binary | binary | 63 | Yes | Yes | 1 | NO PAD | +| ascii_bin | ascii | 65 | Yes | Yes | 1 | PAD SPACE | +| utf8_bin | utf8 | 83 | Yes | Yes | 1 | PAD SPACE | +| gbk_bin | gbk | 87 | Yes | Yes | 1 | PAD SPACE | +| gb18030_bin | gb18030 | 249 | Yes | Yes | 1 | PAD SPACE | ++-------------+---------+-----+---------+----------+---------+---------------+ +7 rows in set (0.000 sec) ``` 要过滤字符集,可以添加 `WHERE` 子句。