他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

9.10. 列挙型サポート関数

列挙型(8.7で解説)に対し、特に列挙型の値をハードコーディングせず簡潔なプログラミングを可能にするいくつかの関数があります。 それらの関数は表 9.34で一覧されています。 例は以下のようにして列挙型が作成されていることを想定しています。

CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple');

表9.34 列挙型サポート関数

関数

説明

enum_first ( anyenum ) → anyenum

入力列挙型の最初の値を返します。

enum_first(null::rainbow)red

enum_last ( anyenum ) → anyenum

入力列挙型の最後の値を返します。

enum_last(null::rainbow)purple

enum_range ( anyenum ) → anyarray

入力列挙型の全ての値を順序付き配列として返します。

enum_range(null::rainbow){red,orange,yellow,​green,blue,purple}

enum_range ( anyenum, anyenum ) → anyarray

与えられた2つの列挙型値の範囲を、順序配列として返します。 値は同一の列挙型に拠らなければなりません。 1番目のパラメータがNULLの場合、結果は列挙型の最初の値から始まります。 2番目のパラメータがNULLの場合、結果は列挙型の最後の値で終わります。

enum_range('orange'::rainbow, 'green'::rainbow){orange,yellow,green}

enum_range(NULL, 'green'::rainbow){red,orange,​yellow,green}

enum_range('orange'::rainbow, NULL){orange,yellow,green,​blue,purple}


enum_rangeの2引数の形式を除き、これらの関数は、渡された特定の値を無視することに注意してください。関数は宣言されたデータ型のみ配慮します。 その型のNULLまたは特定の値を渡すことができ、同一の結果が得られます。 例で使われているような直書きした型名に対してではなく、テーブル列もしくは関数引数にこれらの関数を適用することがより一般的です。