Postgresql hat vor einiger Zeit Enum-Unterstützung erhalten.
CREATE TYPE myenum AS ENUM (
'value1',
'value2',
);
Wie erhalte ich alle in der Aufzählung angegebenen Werte mit einer Abfrage?
postgresql
enums
Wienczny
quelle
quelle
Antworten:
Wenn Sie ein Array möchten:
Wenn Sie für jedes Element in der Aufzählung einen separaten Datensatz wünschen:
zusätzliche Information
Diese Lösung funktioniert wie erwartet, auch wenn sich Ihre Aufzählung nicht im Standardschema befindet. Zum Beispiel ersetzen
myenum
durchmyschema.myenum
.Der Datentyp der zurückgegebenen Datensätze in der obigen Abfrage lautet
myenum
. Je nachdem, was Sie tun, müssen Sie möglicherweise in Text umwandeln. z.BWenn Sie den Spaltennamen angeben möchten, können Sie anhängen
AS my_col_name
.Wir danken Justin Ohms für den Hinweis auf einige zusätzliche Tipps, die ich in meine Antwort aufgenommen habe.
quelle
NULL::
?SELECT enum_range(myenum)
? Was bedeutet Castingnull
?Versuchen:
quelle
ORDER BY e.enumsortorder
an die Abfrage an. Die aufgezählten Werte sind höchstwahrscheinlich nicht in der richtigen Reihenfolge, wenn neue Werte mitBEFORE
oder in den Aufzählungstyp eingefügt wurdenAFTER
.Dies gibt eine einspaltige Ergebnismenge des Inhalts der Aufzählung "your_enum" mit einer Spalte mit dem Namen "your_column" vom Typ text zurück.
quelle
Mit der folgenden Abfrage können Sie alle Aufzählungswerte für eine Aufzählung abrufen. Mit der Abfrage können Sie auswählen, in welchem Namespace sich auch die Aufzählung befindet (dies ist erforderlich, wenn die Aufzählung in mehreren Namespaces definiert ist; andernfalls können Sie diesen Teil der Abfrage weglassen).
quelle