171 votes

Requête SQL pour obtenir toutes les valeurs qu'une enum peut avoir

Postgresql a reçu un soutien considérable il y a quelque temps.

 CREATE TYPE myenum AS ENUM (
'value1',
'value2',
);
 

Comment obtenir toutes les valeurs spécifiées dans l'énum avec une requête?

327voto

Chris Points 438

Les autres réponses fonctionnent, mais il existe une manière plus propre de le faire.

Si vous voulez un tableau:

 SELECT enum_range(NULL::myenum)
 

Si vous souhaitez un enregistrement distinct pour chaque élément de l'énumération:

 SELECT unnest(enum_range(NULL::myenum))
 

34voto

Kev Points 5046

Essayer:

 SELECT e.enumlabel
  FROM pg_enum e
  JOIN pg_type t ON e.enumtypid = t.oid
  WHERE t.typname = 'myenum'
 

6voto

Justin Ohms Points 1029
 SELECT unnest(enum_range(NULL::your_enum))::text AS your_column
 

Cela renverra un ensemble de résultats de colonne unique du contenu de l'énumération "your_enum" avec une colonne nommée "your_column" de type text.

4voto

David Underhill Points 9356

Vous pouvez obtenir toutes les valeurs enum pour une enum en utilisant la requête suivante. La requête vous permet également de choisir le nom de l'espace de nommage de l'énum (ce qui est obligatoire si l'énum est défini dans plusieurs espaces de nommage, sinon vous pouvez omettre cette partie de la requête).

 SELECT enumlabel
FROM pg_enum
WHERE enumtypid=(SELECT typelem
                 FROM pg_type
                 WHERE typname='_myenum' AND
                 typnamespace=(SELECT oid
                               FROM pg_namespace
                               WHERE nspname='myschema'))
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X