Konvertieren Ich habe einen benutzerdefinierten Datentyp Enum wie so erstellt. Ich möchte diese ganzen Zahlen in ihre entsprechenden Enum-Werte konvertieren.einen Integer zu Enum in PostgreSQL
Wie kann ich das tun?
Ich benutze PostgreSQL 8.4.
Konvertieren Ich habe einen benutzerdefinierten Datentyp Enum wie so erstellt. Ich möchte diese ganzen Zahlen in ihre entsprechenden Enum-Werte konvertieren.einen Integer zu Enum in PostgreSQL
Wie kann ich das tun?
Ich benutze PostgreSQL 8.4.
SELECT (ENUM_RANGE(NULL::bnfunctionstype))[s]
FROM generate_series(1, 5) s
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
$$;
Ich muss das für mehrere Enum-Typen machen, also würde ich es wirklich gerne tun Vermeiden Sie es, alle einzelnen Werte zu wiederholen und für jede eine gespeicherte Prozedur zu erstellen. – BuschnicK
Wenn Sie eine Enumeration wie folgt aus:
CREATE TYPE payment_status AS ENUM ('preview', 'pending', 'paid',
'reviewing', 'confirmed', 'cancelled');
Sie eine Liste der gültigen Elemente wie diese erstellen:
SELECT i, (enum_range(NULL::payment_status))[i]
FROM generate_series(1, array_length(enum_range(NULL::payment_status), 1)) i
Welche gibt:
i | enum_range
---+------------
1 | preview
2 | pending
3 | paid
4 | reviewing
5 | confirmed
6 | cancelled
(6 rows)
Das sieht sehr elegant aus - ich werde es am Montag versuchen (wenn ich wieder im Büro bin) und Ihnen eine Antwort geben ... – BuschnicK