Es geht viel einfacher Weg in PostgreSQL, um den Typ einer Spalte zu erhalten.
SELECT pg_typeof(col)::text FROM tbl LIMIT 1
Die Tabelle muss natürlich mindestens eine Zeile enthalten. Und Sie erhalten nur den Basistyp ohne Typmodifikatoren (falls vorhanden). Verwenden Sie die unten stehende Alternative, wenn Sie das auch brauchen.
Sie können die Funktion auch für Konstanten verwenden. Das Handbuch auf pg_typeof()
.
Für eine leere (oder beliebige) Tabelle können Sie den Systemkatalog pg_attribute
abfragen um die vollständige Liste der Spalten und ihres jeweiligen Typs in der Reihenfolge zu erhalten:
SELECT attnum, attname AS column, format_type(atttypid, atttypmod) AS type
FROM pg_attribute
WHERE attrelid = 'myschema.mytbl'::regclass -- optionally schema-qualified
AND NOT attisdropped
AND attnum > 0
ORDER BY attnum;
Das Handbuch zu format_type()
und auf Objektkennungstypen
wie regclass
.