列挙型が持つことができるすべての値を取得するSQLクエリ 質問する

列挙型が持つことができるすべての値を取得するSQLクエリ 質問する

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 に感謝します。そのヒントを私の回答に取り入れました。

おすすめ記事