PostgreSQL enum_range() 函数使用指南
PostgreSQL enum_range()
函数返回由参数指定的枚举类型的所有枚举值,或者指定的范围内的枚举值。
enum_range()
语法
这里是 PostgreSQL enum_range()
函数的语法:
enum_range(enum_value ANYENUM) -> ARRAY
或者
enum_range(enum_range_start ANYENUM, enum_range_end ANYENUM) -> ARRAY
参数
enum_value
- 必需的。 一个枚举值。 通常,传入一个 null 值。
enum_range_start
- 必需的。 一个枚举值。 枚举范围的起始值。 它必须和
enum_range_end
是相同的枚举类型。 enum_range_end
- 必需的。 一个枚举值。 枚举范围的结束值。 它必须和
enum_range_start
是相同的枚举类型。
返回值
带有一个参数的 PostgreSQL enum_range()
函数返回指定枚举类型的所有的枚举值。
带有两个参数的 PostgreSQL enum_range()
函数返回由 enum_range_start
和 enum_range_end
确定的范围内的所有的枚举值。如果第一个参数 enum_range_start
为 NULL,范围将从第一个枚举值开始。如果第二个参数 enum_range_end
为 NULL,范围将以最后一个枚举值结束。如果两个参数都为 NULL,enum_range()
函数将返回所有的枚举值。
enum_range()
示例
首先,让我们使用 CREATE TYPE
语句创建一个枚举类型 my_number
:
CREATE TYPE my_number AS ENUM (
'one',
'two',
'three',
'four',
'five',
'six',
'seven',
'eight',
'nine',
'ten'
);
然后,让我们使用 PostgreSQL enum_range()
函数返回 my_number
中的所有的枚举值:
SELECT enum_range(null::my_number);
enum_range
----------------------------------------------------
{one,two,three,four,five,six,seven,eight,nine,ten}
这里,我们为 enum_range()
函数提供了一个 my_number
类型的 null 参数 null::my_number
,并且 enum_range()
函数返回了 my_number
中的所有的枚举值。
注意,您不能省略 null::my_number
中的 ::my_number
,否则 PostgreSQL 将会给出一个错误。
当然,您也可以传入任何一个 my_number
类型的枚举值,比如:
SELECT
enum_range('one'::my_number),
enum_range('two'::my_number),
enum_range('three'::my_number),
enum_range('four'::my_number),
enum_range('five'::my_number),
enum_range('six'::my_number),
enum_range('seven'::my_number),
enum_range('eight'::my_number),
enum_range('nine'::my_number),
enum_range('ten'::my_number);
-[ RECORD 1 ]--------------------------------------------------
enum_range | {one,two,three,four,five,six,seven,eight,nine,ten}
enum_range | {one,two,three,four,five,six,seven,eight,nine,ten}
enum_range | {one,two,three,four,five,six,seven,eight,nine,ten}
enum_range | {one,two,three,four,five,six,seven,eight,nine,ten}
enum_range | {one,two,three,four,five,six,seven,eight,nine,ten}
enum_range | {one,two,three,four,five,six,seven,eight,nine,ten}
enum_range | {one,two,three,four,five,six,seven,eight,nine,ten}
enum_range | {one,two,three,four,five,six,seven,eight,nine,ten}
enum_range | {one,two,three,four,five,six,seven,eight,nine,ten}
enum_range | {one,two,three,four,five,six,seven,eight,nine,ten}
这里,我们传入了所有的 my_number
类型的枚举值,enum_range()
函数都返回了 my_number
中的所有的枚举值。
我们可以使用带有两个参数的 enum_range()
函数获取某个范围内的枚举值,比如:
SELECT enum_range('two'::my_number, 'six'::my_number);
enum_range
---------------------------
{two,three,four,five,six}
如果第一个参数为 NULL,范围将从第一个枚举值开始,比如:
SELECT enum_range(null::my_number, 'six'::my_number);
enum_range
-------------------------------
{one,two,three,four,five,six}
如果第二个参数为 NULL,范围将以最后一个枚举值结束,比如:
SELECT enum_range('two'::my_number, null::my_number);
enum_range
------------------------------------------------
{two,three,four,five,six,seven,eight,nine,ten}
如果两个参数都为 NULL,enum_range()
函数将返回所有的枚举值,比如:
SELECT enum_range(null::my_number, null::my_number);
enum_range
----------------------------------------------------
{one,two,three,four,five,six,seven,eight,nine,ten}