字符集与字符序
字符集(Character Set)是字符的编码规则,字符序(Collation)是字符的排序规则,本章主要对 openGauss B模式(即sql_compatibility = 'B')下的字符集、字符序进行介绍,以下介绍的字符集、字符序规则和语法仅在B模式下支持。
字符集和字符序存在以下说明:
- 每一个字符集都有一个或多个字符序,其中一个字符序为默认字符序。
- 每一个字符序仅有一个相关联的字符集。
- 相同数据使用不同的字符序排序结果可能会不同。
- 在openGauss中,utf8mb4与utf8为同一字符集。
- 建议表字段和server_encoding选择相同字符集,避免转码带来的性能损耗。
openGauss数据库支持以下功能:
- 支持多种字符集存储字符串。
- 支持使用字符序比较字符串。
- 支持数据库级、模式级、表级、字段级字符集和字符序。
- 支持在同服务器、同数据库、同一个表、同一条SQL语句中混合使用不同字符集和字符序的字符串。
支持的字符集
openGauss 目前所支持的字符集可以参考 CREATE DATABASE 章节中 ENCODING 部分介绍。
其中,部分字符集在B模式下存在默认字符序,如下:
字符集 | 说明 | 默认字符序 |
---|---|---|
utf8 | 针对Unicode的可变长度字符编码,字符编码长度1~4字节 | utf8_general_ci |
utf8mb4 | 同utf8 | utf8mb4_general_ci |
gb18030 | 国标汉字编码字符集 | gb18030_chinese_ci |
gb18030-2022 | 国标汉字编码字符集 | gb18030_chinese_ci |
gbk | 国标汉字编码扩展字符集 | gbk_chinese_ci |
binary | 二进制伪字符集 | binary |
说明:
- 当前模式级、表级和字段级语法仅支持指定为上述字符集。
支持的字符序
openGauss所有支持的字符序详见PG_COLLATION系统表。
还有部分字符序规则仅支持在B模式下使用,如下:
字符序 | 所属字符集 | 说明 | 空白填充 |
---|---|---|---|
binary | binary | 使用二进制排序规则 | 不支持 |
utf8mb4_general_ci | utf8mb4 | 使用通用排序规则 | 支持 |
utf8mb4_unicode_ci | utf8mb4 | 使用基于 Unicode Collation Algorithm (UCA) 的排序规则 | 支持 |
utf8mb4_bin | utf8mb4 | 使用二进制排序规则 | 支持 |
utf8_general_ci | utf8 | 同utf8mb4_general_ci | 支持 |
utf8_unicode_ci | utf8 | 同utf8mb4_unicode_ci | 支持 |
utf8_bin | utf8 | 同utf8_bin | 支持 |
gbk_chinese_ci | gbk | 使用中文语言(拼音)排序规则。 | 支持 |
gbk_bin | gbk | 使用二进制排序规则。 | 支持 |
gb18030_chinese_ci | gb18030 | 使用中文语言(拼音)排序规则。 | 支持 |
gb18030_bin | gb18030 | 使用二进制排序规则。 | 支持 |
说明:
- 以上字符序仅在B模式下可以使用。
- 字符序名称以与它们相关联的字符集的名称开头,通常后跟一个或多个表示其他字符序特征的后缀,例如: _bin表示二进制排序规则, _ci表示不区分大小写。
- 当字符序支持空白填充属性,则字符串比较时忽略末尾空格,例如 : 'A ' = 'A'。