Det finns en mycket enklare sätt i PostgreSQL för att få typen av en kolumn.
SELECT pg_typeof(col)::text FROM tbl LIMIT 1
Bordet måste naturligtvis innehålla minst en rad. Och du får bara bastypen utan typmodifierare (om några). Använd alternativet nedan om du också behöver det.
Du kan använda funktionen för konstanter också. manualen på pg_typeof()
.
För en tom (eller vilken som helst) tabell kan du använda fråga systemkatalogen pg_attribute
för att få hela listan över kolumner och deras respektive typ i ordning:
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;
Handboken om format_type()
och på objektidentifieringstyper
som regclass
.