Pour les types enum (décrit dans Section 8.7, « Types énumération »), il existe plusieurs fonctions qui autorisent une programmation plus claire sans coder en dur les valeurs particulières d'un type enum. Elles sont listées dans Tableau 9.30, « Fonctions de support enum ». Les exemples supposent un type enum créé ainsi :
CREATE TYPE couleurs AS ENUM ('rouge', 'orange', 'jaune', 'vert', 'bleu', 'violet');
Tableau 9.30. Fonctions de support enum
Fonction | Description | Exemple | Résultat de l'exemple |
---|---|---|---|
enum_first(anyenum) | Renvoie la première valeur du type enum en entrée | enum_first(null::couleurs) | rouge |
enum_last(anyenum) | Renvoie la dernière valeur du type enum en entrée | enum_last(null::couleurs) | violet |
enum_range(anyenum) | Renvoie toutes les valeurs du type enum en entrée dans un tableau trié | enum_range(null::couleurs) | {rouge,orange,jaune,vert,bleu,violet} |
enum_range(anyenum, anyenum) | Renvoie les éléments entre deux valeurs enum données dans un tableau trié. Les valeurs doivent être du même type enum. Si le premier paramètre est NULL, le résultat se termine avec la dernière valeur du type enum. | enum_range('orange'::couleurs, 'vert'::couleurs) | {orange,jaune,vert} |
enum_range(NULL, 'vert'::couleurs) | {rouge,orange,jaune,vert} | ||
enum_range('orange'::couleurs, NULL) | {orange,jaune,vert,bleu,violet} |
En dehors de la forme à deux arguments de enum_range, ces fonctions ne tiennent pas compte de la valeur qui leur est fournie ; elles ne s'attachent qu'au type de donnée déclaré. NULL ou une valeur spécifique du type peut être passée, le résultat est le même. Il est plus commun d'appliquer ces fonctions à la colonne d'une table ou à l'argument d'une fonction qu'à un nom de type en dur, comme le suggèrent les exemples.