Документация по PostgreSQL 9.4.1 | |||
---|---|---|---|
Пред. | Уровень выше | Глава 9. Функции и операторы | След. |
9.10. Функции для перечислений
Для типов перечислений (описанных в Разделе 8.7) предусмотрено несколько функций, которые позволяют сделать код чище, не «зашивая» в нём конкретные значения перечисления. Эти функции перечислены в Таблице 9-30. В этих примерах подразумевается, что перечисление создано так:
CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple');
Таблица 9-30. Функции для перечислений
Функция | Описание | Пример | Результат примера |
---|---|---|---|
enum_first(anyenum) | Возвращает первое значение заданного перечисления | enum_first(null::rainbow) | red |
enum_last(anyenum) | Возвращает последнее значение заданного перечисления | enum_last(null::rainbow) | purple |
enum_range(anyenum) | Возвращает все значения заданного перечисления в упорядоченном массиве | enum_range(null::rainbow) | {red,orange,yellow,green,blue,purple} |
enum_range(anyenum, anyenum) | Возвращает набор значений, лежащих между двумя заданными, в виде упорядоченного массива. Эти значения должны принадлежать одному перечислению. Если первый параметр равен 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 или любое другое значение типа. Обычно эти функции применяются к колонкам таблицы или аргументам внешних функций, а не к предопределённым типам, как показано в этих примерах.
Пред. | Начало | След. |
Операторы и функции даты/времени | Уровень выше | Геометрические функции и операторы |