Postgresql は少し前に enum サポートを取得しました。
CREATE TYPE myenum AS ENUM (
'value1',
'value2',
);
クエリを使用して列挙型で指定されたすべての値を取得するにはどうすればよいですか?
ベストアンサー1
配列が必要な場合:
SELECT enum_range(NULL::myenum)
列挙型内の各項目に個別のレコードが必要な場合:
SELECT unnest(enum_range(NULL::myenum))
追加情報
このソリューションは、列挙型がデフォルトのスキーマにない場合でも期待どおりに機能します。たとえば、myenum
を に置き換えますmyschema.myenum
。
上記のクエリで返されるレコードのデータ型は になりますmyenum
。実行内容に応じて、テキストにキャストする必要がある場合があります。例:
SELECT unnest(enum_range(NULL::myenum))::text
列名を指定する場合は、 を追加できますAS my_col_name
。
いくつかの追加のヒントを指摘してくれた Justin Ohms に感謝します。そのヒントを私の回答に取り入れました。