Er is een veel eenvoudigere manier in PostgreSQL om het type kolom te krijgen.
SELECT pg_typeof(col)::text FROM tbl LIMIT 1
De tafel moet natuurlijk minimaal één rij bevatten. En u krijgt alleen het basistype zonder typemodifiers (indien aanwezig). Gebruik het alternatief hieronder als je dat ook nodig hebt.
Je kunt de functie ook voor constanten gebruiken. De handleiding op pg_typeof()
.
Voor een lege (of een willekeurige) tabel kunt u de systeemcatalogus pg_attribute
. gebruiken om de volledige lijst met kolommen en hun respectieve type in volgorde te krijgen:
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;
De handleiding op format_type()
en op type object-ID's
zoals regclass
.