Можете да конвертирате "OID" в текст
чрез просто кастинг - предоставен OID (идентификатор на обект)
всъщност е regtypeкод>
(подтипа OID за регистрирани типове), както бихте получили от функцията pg_typeof()
.
Postgres обикновено показва стойности от типа данни regtype
като текст
към потребителя. Пример:
SELECT pg_typeof('2013-1-1'::date);
pg_typeof
-----------
date
Докато вътрешно това е OID:
SELECT pg_typeof('2013-1-1'::date)::oid;
pg_typeof
-----------
1082
Ако вашият клиент не направи същото, можете да го принудите с изрично изпълнение:
SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;
Вземете типове на всички колони от системния каталог
Не е ясно как вие всъщност извличате типовете. Разгледайте тази заявка, за да получите пълна информация:
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
Имайте предвид, че format_type(..)
показва типа, включително модификатори.