Postgresql a obtenu le support enum il y a quelque temps.
CREATE TYPE myenum AS ENUM (
'value1',
'value2',
);
Comment obtenir toutes les valeurs spécifiées dans l'énumération avec une requête?
postgresql
enums
Wienczny
la source
la source
Réponses:
Si vous voulez un tableau:
Si vous voulez un enregistrement séparé pour chaque élément de l'énumération:
Information additionnelle
Cette solution fonctionne comme prévu même si votre énumération n'est pas dans le schéma par défaut. Par exemple, remplacez
myenum
parmyschema.myenum
.Le type de données des enregistrements renvoyés dans la requête ci-dessus sera
myenum
. Selon ce que vous faites, vous devrez peut-être convertir en texte. par exempleSi vous souhaitez spécifier le nom de la colonne, vous pouvez ajouter
AS my_col_name
.Merci à Justin Ohms pour avoir signalé quelques conseils supplémentaires, que j'ai incorporés dans ma réponse.
la source
NULL::
?SELECT enum_range(myenum)
? Quelle est la signification du castingnull
?Essayer:
la source
ORDER BY e.enumsortorder
à la requête. Les valeurs énumérées seront probablement dans le désordre si de nouvelles valeurs ont été insérées dans le type d'énumération à l'aide deBEFORE
ouAFTER
.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 texte.
la source
Vous pouvez obtenir toutes les valeurs d'énumération pour une énumération à l'aide de la requête suivante. La requête vous permet de choisir dans quel espace de noms l'énumération réside également (ce qui est obligatoire si l'énumération est définie dans plusieurs espaces de noms; sinon, vous pouvez omettre cette partie de la requête).
la source