Converting an Integer to Enum in PostgreSQL Converting an Integer to Enum in PostgreSQL sql sql

Converting an Integer to Enum in PostgreSQL


SELECT (ENUM_RANGE(NULL::bnfunctionstype))[s]FROM   generate_series(1, 5) s


If you have an enum like this:

CREATE TYPE payment_status AS ENUM ('preview', 'pending', 'paid',                                     'reviewing', 'confirmed', 'cancelled');

You can create a list of valid items like this:

SELECT i, (enum_range(NULL::payment_status))[i]   FROM generate_series(1, array_length(enum_range(NULL::payment_status), 1)) i

Which gives:

 i | enum_range ---+------------ 1 | preview 2 | pending 3 | paid 4 | reviewing 5 | confirmed 6 | cancelled(6 rows)


create function bnfunctionstype_from_number(int)    returns bnfunctionstype    immutable strict language sql as$$    select case ?        when 0 then 'normal'        when 1 then 'library'        when 2 then 'import'        when 3 then 'thunk'        when 4 then 'adjustor_thunk'        else null    end$$;