Możesz przekonwertować „OID” na tekst
przez proste rzutowanie - pod warunkiem OID (identyfikator obiektu)
jest w rzeczywistości regtype
(podtyp OID dla zarejestrowanych typów), jak można by uzyskać z funkcji pg_typeof()
.
Postgres zwykle wyświetla wartości typu danych regtype
jako tekst
do użytkownika. Przykład:
SELECT pg_typeof('2013-1-1'::date);
pg_typeof
-----------
date
Chociaż wewnętrznie jest to OID:
SELECT pg_typeof('2013-1-1'::date)::oid;
pg_typeof
-----------
1082
Jeśli twój klient nie zrobi tego samego, możesz wymusić to za pomocą wyraźnego rzutu:
SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;
Pobierz typy wszystkich kolumn z katalogu systemowego
Nie jest jasne, jak faktycznie pobierasz typy. Rozważ to zapytanie, aby uzyskać pełne informacje:
SELECT attname
, atttypid::regtype AS base_type
, format_type(atttypid, atttypmod) AS full_type
FROM pg_catalog.pg_attribute
WHERE attrelid = 'public.tbl'::regclass -- your table name here
AND attnum > 0
AND NOT attisdropped
ORDER BY attnum;
attname | base_type | full_type
------------+-----------------------------+-----------------------------
age_id | integer | integer
age | text | text
ageabk | character | character(2)
foo | boolean | boolean
log_up | timestamp without time zone | timestamp without time zone
Pamiętaj, że typ_formatu(..)
wyświetla typ wraz z modyfikatorami.