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