Postgresql 中文操作指南

9.10. Enum Support Functions #

对于枚举类型(在 Section 8.7 中介绍),有几个函数允许在不硬编码特定枚举值的计算情况下实现更简洁的编程。这些函数在 Table 9.35 中列出。示例假定创建一个枚举类型,如下所示:

CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple');

Table 9.35. Enum Support Functions

Function

Description

Example(s)

enum_first ( anyenum ) → anyenum 返回输入枚举类型的第一个值。 enum_first(null::rainbow)red

enum_last ( anyenum ) → anyenum 返回输入枚举类型的最后一个值。 enum_last(null::rainbow)purple

enum_range ( anyenum ) → anyarray 以有序数组的形式返回输入枚举类型的所有值。 enum_range(null::rainbow){red,orange,yellow,​green,blue,purple}

enum_range ( anyenum , anyenum ) → anyarray 以有序数组形式返回给定枚举值之间的范围。这些值必须来自相同的枚举类型。如果第一个参数为 null,结果将以枚举类型的第一个值开头。如果第二个参数为 null,结果将以枚举类型的最后一个值结尾。 enum_range('orange'::rainbow, 'green'::rainbow){orange,yellow,green} enum_range(NULL, 'green'::rainbow){red,orange,​yellow,green} enum_range('orange'::rainbow, NULL){orange,yellow,green,​blue,purple}

请注意,除了 enum_range 的双参数形式外,这些函数都不考虑传递给它们的参数值;它们只关心声明的数据类型。可以传递 null 或该类型的具体值,结果相同。将这些函数应用于表列或函数参数,而不是像示例中那样应用于固定的类型名称更为常见。