IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

9.10. Fonctions de support enum

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.29, « 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.29. 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.