列级字符集和字符序
每个字符串类型(即类型为CHAR
、VARCHAR
、 TEXT
、SET
等字符串类型)的列都可以设置列的字符集和列的字符序。
CREATE TABLE table_name (
column_name data_type
[ CHARACTER SET | CHARSET charset ]
[ COLLATE collation ]
);
语法说明:
table_name
表名称。
data_type
字段的数据类型,字符串类型支持字符集、字符序语法。
CHARACTER SET | CHARSET charset
指定表字段的字符集,单独指定时会将字段的字符序设置为指定的字符集的默认字符序。
COLLATE collation
COLLATE子句指定列的字符序(该列的数据类型必须支持字符序)。如果没有指定,则使用默认的排序规则。
openGauss 通过以下方式选择表字段的字符集和字符序:
- 如果同时指定了
charset
和collation
,则使用字符集charset
和字符序collation
,且charset
和collation
需要对应,不对应报错。 - 如果仅指定了
charset
,则使用字符集charset
及其默认字符序。 - 如果仅指定了
collation
,则使用与collation
关联的字符集和指定的字符序。 - 如果既不指定
charset
也不指定collation
,则使用表的默认字符集和默认字符序。
说明:
default_charact
仅支持指定为带有默认字符序的字符集,如果指定的字符集没有默认字符序则报错。default_collation
仅支持指定为B模式下的字符序,指定其他字符序报错。- 如果表字段为文本类型且指定的字符序为
binary
,则文本类型会转换为对应的二进制类型,字符序为指定的binary
字符序。 - 设置表字段的默认字符集和默认字符序与数据库字符集
server_encoding
不同时需要先设置b_format_behavior_compat_options
参数包含enable_multi_charset
。 - 分区表的分区键的字符集必须与数据库字符集相同。
示例:
-- 仅设置字符集,字符序为字符集的默认字符序
openGauss=# create table test(c1 text charset utf8);
-- 仅设置字符序,字符集为字符序关联的字符集
openGauss=# create table test(c1 text collate utf8_bin);
-- 同时设置字符集与字符序,字符集和字符序需对应
openGauss=# create table test(c1 text charset utf8 collate utf8_bin);
意见反馈