Die vorgeschlagene Abfrage zum Auflisten von ENUM-Typen ist großartig. Aber es listet nur die schema
und die typname
. Wie liste ich die tatsächlichen ENUM-Werte auf? In der oben verlinkten Antwort möchte ich beispielsweise das folgende Ergebnis
schema type values
------------- -------- -------
communication channels 'text_message','email','phone_call','broadcast'
postgresql
punkig
quelle
quelle
string_agg(e.enumlabel, ', ') as enum_value
mit dem passenden zu verwendenGROUP BYs
. Danke vielmals.Sie können den Datentyp über auflisten
https://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-META-COMMANDS
quelle
quelle
select unnest(enum_range(null, null::name_of_enum_type));
diese Option , um einen Wert pro Zeile abzurufen.select enum_range(null::my_enum)
. postgresql.org/docs/9.5/static/functions-enum.htmlIch vergesse immer, wie das geht. Wie aus der anderen Antwort und dem Kommentar hervorgeht, handelt es sich hier um eine durch Kommas getrennte Liste. Ich mag Copy-Paste-Snippets. Danke für die Hilfe:
quelle
@dpb:
Wenn Sie hierfür eine permanente Methode für den einfachen Zugriff erstellen möchten, können Sie jederzeit eine Ansicht erstellen
Sie können dann einen Trigger für den Befehl insert erstellen.
Das Obige speichert dies in der Datenbank für zukünftige Referenzzwecke.
quelle
Hier werden alle Spalten mit Aufzählungstypen und ihre potenziellen Werte aufgelistet :
quelle
Bestellung hinzufügen
quelle
Dies:
SELECT unnest(enum_range(NULL::myenum))
Gibt Aufzählungstypen als Zeilen zurück.quelle
Wenn Sie den Tabellen- und Spaltennamen (aber nicht den Typnamen) haben, verwenden Sie diesen:
Wenn Sie
enum_range
eine Spalte verwenden (im Gegensatz zu den anderen Antworten, die sie für einen Typ verwendet haben), werden Daten für jede vorhandene Zeile zurückgegeben, was nicht das ist, was Sie möchten. Verwenden Sie stattdessen die obige Abfrage.quelle
pg_namespace
, führt dies zu falschen Assoziationen, wenn der gleiche Aufzählungsname in mehr als einem Schema vorhanden ist ...