1. ホーム
  2. postgresql

[解決済み] enumが持ちうるすべての値を取得するSQLクエリ

2022-04-23 18:48:23

質問

Postgresqlは少し前にenumをサポートするようになりました。

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

enumで指定されたすべての値をクエリで取得するにはどうすればよいですか?

どのように解決するのですか?

配列にする場合

SELECT enum_range(NULL::myenum)

enumの各項目について個別のレコードが必要な場合。

SELECT unnest(enum_range(NULL::myenum))  


追加情報

この解決策は、使用する列挙型がデフォルト・スキーマにない場合でも期待通りに動作します。例えば myenummyschema.myenum .

上記のクエリで返されるレコードのデータ型は、次のようになります。 myenum . 何をするかに応じて、テキストにキャストする必要があります。

SELECT unnest(enum_range(NULL::myenum))::text

カラム名を指定したい場合は、最後に AS my_col_name .


Justin Ohms氏から追加のヒントをいただきましたので、私の回答に反映させました。