表级字符集和字符序

设置表的默认字符集和默认字符序。

CREATE TABLE table_name (column_list)
    [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ]
    [ [DEFAULT] COLLATE [ = ] default_collation ]

修改表的默认字符集和默认字符序,修改不会影响表中当前已经存在的列。

ALTER TABLE table_name
    [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ]
    [ [DEFAULT] COLLATE [ = ] default_collation ]

修改表的默认字符集和默认字符序为指定的值,同时将表中的所有字符类型的字段的字符集和字符序设置为指定的值,并将字段里的数据转换为新字符集编码。

ALTER TABLE table_name
    CONVERT TO CHARACTER SET | CHARSET charset [ COLLATE collation ]

参数说明

  • table_name

    表名称。

  • default_charset

    指定表的默认字符集,单独指定时会将表的默认字符序设置为指定的字符集的默认字符序。

  • default_collation

    指定表的默认字符序,单独指定时会将表的默认字符集设置为指定的字符序对应的字符集。

openGauss 通过以下方式选择表的字符集和字符序:

  • 如果同时指定了 default_charsetdefault_collation ,则使用字符集 default_charset 和字符序 default_collation ,且 default_charsetdefault_collation 需要对应,不对应报错。
  • 如果仅指定了 default_charset ,则使用字符集 default_charset 及其默认字符序。
  • 如果仅指定了 default_collation ,则使用 default_collation 字符序和其对应的字符集。
  • 如果既不指定 default_charset 也不指定 default_collation ,则使用该表所在的模式的默认字符集和默认字符序作为表的默认字符集和表的默认字符序。

说明:

  • default_charact 仅支持指定为带有默认字符序的字符集,如果指定的字符集没有默认字符序则报错。
  • default_collation 仅支持指定为B模式下的字符序,指定其他字符序报错。
  • 设置表的默认字符集和默认字符序与数据库的server_encoding 不同时需要先设置b_format_behavior_compat_options参数包含enable_multi_charset
  • 如果表的默认字符序为binary ,则表中未指定字符序的文本类型会转换为对应的二进制类型,且字符序设置为binary

示例:

-- 仅设置字符集,字符序为字符集的默认字符序
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;

-- 将表中字符类型字段的数据转化为utf8mb4编码,并设置表和字段的字符序为utf8mb4_bin
openGauss=# alter table test convert to charset utf8mb4 collate utf8mb4_bin;

-- 修改表的默认字符集为utf8mb4,默认字符序为utf8mb4_bin
openGauss=# alter table test charset utf8mb4 collate utf8mb4_bin;
意见反馈
编组 3备份
    openGauss 2024-05-08 00:42:15
    取消