9.10. Enum型(列挙型)サポート関数

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

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

表 9-28. Enumサポート関数

関数説明例の結果
enum_first(anyenum)最初の入力ENUM型の値を返すenum_first(null::rainbow)red
enum_last(anyenum)最後の入力ENUM型の値を返すenum_last(null::rainbow)purple
enum_range(anyenum)ある順序付けられた配列にもとづいて入力ENUM型の全ての値を返すenum_range(null::rainbow){red,orange,yellow,green,blue,purple}
enum_range(anyenum, anyenum) 与えられた2つのENUM値の範囲を、ある順序付けられた配列として返す。値は同一のENUM型に拠らなければならない。始めのパラメータがNULLの場合、結果はENUM型の最初の値から始まる。2番目のパラメータがNULLの場合、結果はENUM型の最後の値で終端する。 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またはその型の特定値のみが渡され、同一の結果をもたらします。例が示唆しているように、組み込まれている型名に対してではなく、テーブル列もしくは関数引数にこれらの関数を適用することがより一般的です。

アダルトレンタルサーバー