9.10. Funções de suporte a tipos de dados enum (enumeração) #

Para os tipos de dados enum (descritos na Seção 8.7), existem várias funções que permitem uma programação mais limpa, sem codificar os valores específicos do tipo de dados enum. Estas funções estão listadas na Tabela 9.35. Os exemplos assumem que o tipo de dados enum foi criado assim:

CREATE TYPE arco_iris AS ENUM ('vermelho', 'laranja', 'amarelo',
                               'verde', 'azul', 'índigo', 'violeta');

Tabela 9.35. Funções de suporte a tipos de dados enum

Função

Descrição

Exemplo(s)

enum_first ( anyenum ) → anyenum

Retorna o primeiro valor da lista do tipo de dados enum.

enum_first(null::arco_iris)vermelho

enum_last ( anyenum ) → anyenum

Retorna o último valor da lista do tipo de dados enum.

enum_last(null::arco_iris)violeta

enum_range ( anyenum ) → anyarray

Retorna todos os valores da lista do tipo de dados enum em uma matriz ordenada.

enum_range(null::arco_iris){vermelho,laranja,amarelo,verde,azul,índigo,violeta}

enum_range ( anyenum, anyenum ) → anyarray

Retorna o intervalo entre os dois valores da lista fornecidos, como uma matriz ordenada. Os valores devem ser do mesmo tipo de dados enum. Se o primeiro parâmetro for nulo, o resultado começará com o primeiro valor da lista do tipo de dados enum. Se o segundo parâmetro for nulo, o resultado terminará com o último valor da lista do tipo de dados enum.

enum_range('laranja'::arco_iris, 'verde'::arco_iris){laranja,amarelo,verde}

enum_range(NULL, 'verde'::arco_iris){vermelho,laranja,amarelo,verde}

enum_range('laranja'::arco_iris, NULL){laranja,amarelo,verde,azul,índigo,violeta}


Note que, exceto para a forma com dois argumentos da função enum_range, estas funções desconsideram o valor específico passado para elas; estas funções se preocupam apenas com o tipo de dados declarado. Pode ser passado nulo ou um valor específico do tipo de dados, obtendo o mesmo resultado. É mais comum aplicar estas funções a uma coluna de tabela, ou a um argumento de função, do que a um nome de tipo de dados codificado como foi feito nestes exemplos.