==================  枚举支持函数 ================== .. container:: sect1 :name: FUNCTIONS-ENUM .. container:: titlepage .. container:: .. container:: .. rubric:: 9.10. 枚举支持函数 :name: 枚举支持函数 :class: title 对于枚举类型(在\ `第 8.7 节 `__\ 中描述), 有一些函数允许更清洁的编码,而不需要为一个枚举类型硬写特定的值。它们被列在\ `表 9.33 `__\ 中。本例假定一个枚举类型被创建为: .. code:: programlisting CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple'); .. container:: table :name: FUNCTIONS-ENUM-TABLE **表 9.33. 枚举支持函数** .. container:: table-contents +----------------+----------------+----------------+----------------+ | 函数 | 描述 | 例子 | 例子结果 | +================+================+================+================+ | | 返回输入枚举 | ` | ``red`` | | ``enum_fi | 类型的第一个值 | `enum_first(nu | | | rst(anyenum)`` | | ll::rainbow)`` | | +----------------+----------------+----------------+----------------+ | | 返回输入枚举类 | ``enum_last(nu | ``purple`` | | ``enum_l | 型的最后一个值 | ll::rainbow)`` | | | ast(anyenum)`` | | | | +----------------+----------------+----------------+----------------+ | | 将 | ` | ``{red,orange | | ``enum_ra | 输入枚举类型的 | `enum_range(nu | ,yellow,green, | | nge(anyenum)`` | 所有值作为一个 | ll::rainbow)`` | blue,purple}`` | | | 有序的数组返回 | | | +----------------+----------------+----------------+----------------+ | ``en | 以一个数组返 | ``enum_ra | ``{orange,y | | um_range(anyen | 回在给定两个枚 | nge('orange':: | ellow,green}`` | | um, anyenum)`` | 举值之间的范围 | rainbow, 'gree | | | | 。值必须来自相 | n'::rainbow)`` | | | | 同的枚举类型。 | | | | | 如果第一个 | | | | | 参数为空,其结 | | | | | 果将从枚举类型 | | | | | 的第一个值开始 | | | | | 。如果第二参数 | | | | | 为空,其结果将 | | | | | 以枚举类型的最 | | | | | 后一个值结束。 | | | +----------------+----------------+----------------+----------------+ | | | ``enum_ran | ` | | | | ge(NULL, 'gree | `{red,orange,y | | | | n'::rainbow)`` | ellow,green}`` | +----------------+----------------+----------------+----------------+ | | | ``enum_rang | ``{orange | | | | e('orange'::ra | ,yellow,green, | | | | inbow, NULL)`` | blue,purple}`` | +----------------+----------------+----------------+----------------+ 请注意,除了双参数形式的\ ``enum_range``\ 外, 这些函数忽略传递给它们的具体值,它们只关心声明的数据类型。 空值或类型的一个特定值可以通过,并得到相同的结果。这些函数更多地被用于一个表列或函数参数,而不是一个硬写的类型名,如例子中所建议。