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