Der er en meget enklere måde i PostgreSQL for at få typen af en kolonne.
SELECT pg_typeof(col)::text FROM tbl LIMIT 1
Bordet skal selvfølgelig indeholde mindst én række. Og du får kun basistypen uden typemodifikatorer (hvis nogen). Brug alternativet nedenfor, hvis du også har brug for det.
Du kan også bruge funktionen til konstanter. manualen på pg_typeof()
.
For en tom (eller en hvilken som helst) tabel kan du bruge forespørgsel i systemkataloget pg_attribute
for at få den fulde liste over kolonner og deres respektive type i rækkefølge:
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;
Manualen til format_type()
og på objektidentifikatortyper
som regclass
.