O Postgresql recebeu suporte enum há algum tempo.
CREATE TYPE myenum AS ENUM (
'value1',
'value2',
);
Como obtenho todos os valores especificados na enumeração com uma consulta?
postgresql
enums
Wienczny
fonte
fonte
Respostas:
Se você deseja uma matriz:
Se você deseja um registro separado para cada item da enumeração:
informação adicional
Essa solução funciona conforme o esperado, mesmo que sua enumeração não esteja no esquema padrão. Por exemplo, substitua
myenum
pormyschema.myenum
.O tipo de dados dos registros retornados na consulta acima será
myenum
. Dependendo do que você está fazendo, pode ser necessário converter em texto. por exemploSe você deseja especificar o nome da coluna, você pode anexar
AS my_col_name
.Os meus agradecimentos a Justin Ohms por apontar algumas dicas adicionais, que incorporei à minha resposta.
fonte
NULL::
?SELECT enum_range(myenum)
? Qual é o significado do castingnull
?Experimentar:
fonte
ORDER BY e.enumsortorder
à consulta. Os valores enumerados provavelmente ficarão fora de ordem se novos valores forem inseridos no tipo de enumeração usandoBEFORE
orAFTER
.Isso retornará um conjunto de resultados de coluna única do conteúdo da enumeração "your_enum" com uma coluna denominada "your_column" do tipo text.
fonte
Você pode obter todos os valores de enum usando uma consulta a seguir. A consulta permite escolher em qual namespace o enum também está (o que é necessário se o enum estiver definido em vários namespaces; caso contrário, você poderá omitir essa parte da consulta).
fonte