Enum类型

枚举(ENUM)类型是包含一组静态、有序值的数据类型。它们等效于许多编程语言中支持的枚举类型。枚举类型的一个示例可能是星期几,或者是一组数据的状态值。ENUM类型能够提供可读的查询和输出。

创建和使用ENUM列 

枚举值必须是带引号的字符串文字。使用enum类型主要有两种方式:

  1. 通过 CREATE TYPE命令创建ENUM类型,然后指定列为该类型:
    CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
    CREATE TABLE person (
        name text,
        current_mood mood
    );
    INSERT INTO person VALUES ('Moe', 'happy');
    SELECT * FROM person WHERE current_mood = 'happy';
     name | current_mood 
    ------+--------------
     Moe  | happy
    (1 row)
  2. 直接在定义table的时候定义列为enum类型:
    
    
    CREATE TABLE person (
        name text,
        current_mood ENUM ('sad', 'ok', 'happy')
    );
    INSERT INTO person VALUES ('Moe', 'happy');
    SELECT * FROM person WHERE current_mood = 'happy';
     name | current_mood
    ------+--------------
     Moe  | happy
    (1 row)

枚举文字的索引值

每个枚举值都有一个索引:

  • 列规范中列出的元素分配有索引号,从 1 开始。

  • “索引”指的是枚举值列表中的一个位置。例如,指定为的列ENUM ('sad', 'ok', 'happy')将每个值产生以下索引。

枚举值索引

''sad'

1
'ok'2
'happy''

3

在插入表格的时候,可以使用数字来代替对应的枚举值:

openGauss=# INSERT INTO person VALUES('Moe', 1);
INSERT 0 1
openGauss=# SELECT * FROM person;
 name | current_mood 
------+--------------
 Moe  | sad
(1 rows)

在使用数字时,必须是非负整数,不能是浮点数,并且数字的范围不能超过枚举类型中枚举值的个数。

NULL 枚举值

枚举值也可以是空字符串 ('') 或NULL在某些情况下:

NULL枚举值可以用三种表达方式:0,''(空字符串)和NULL.

如果将无效值插入到 ENUM(即允许值列表中不存在的字符串)中,将会报错。

使用约束

  1. 枚举值字符串长度最大为63个字符,超过该限制会报错。
  2. ENUM类型虽然可以在分区表中声明,但是不能用于分区表中作为分区依据。
  3. 支持行存表中定义enum类型,但是不支持列存标中进行定义。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐