Вспомогательные функции перечислений
Для перечислимых типов (описанных в разделе Перечислимые типы) существует несколько функций, позволяющих программировать чище, без жесткого кодирования конкретных значений перечислимого типа. Эти функции приведены ниже. В примерах предполагается, что перечислимый тип создан как:
CREATE TYPE rainbow AS ENUM (’red’, ’orange’, ’yellow’, ’green’, ’blue’, ’purple’);
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, либо конкретное значение этого типа, при этом результат будет одинаковым. Как правило, эти функции применяются к столбцу таблицы или аргументу функции, а не к жестко закодированному имени типа, как показано в примерах.