Anda dapat mengonversi "OID" menjadi text
hanya dengan casting - dengan menyediakan OID (Object Identifier)
sebenarnya adalah regtype
(subtipe OID untuk tipe terdaftar) seperti yang akan Anda dapatkan dari fungsi pg_typeof()
.
Postgres biasanya akan menampilkan nilai dari tipe data regtype
sebagai text
kepada pengguna. Contoh:
SELECT pg_typeof('2013-1-1'::date);
pg_typeof
-----------
date
Sementara secara internal itu adalah OID:
SELECT pg_typeof('2013-1-1'::date)::oid;
pg_typeof
-----------
1082
Jika klien Anda tidak melakukan hal yang sama, Anda dapat memaksanya dengan pemeran eksplisit:
SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;
Dapatkan jenis semua kolom dari katalog sistem
Tidak jelas bagaimana Anda benar-benar mengambil jenis. Pertimbangkan kueri ini untuk mendapatkan informasi lengkap:
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
Perhatikan bahwa format_type(..)
menampilkan tipe termasuk pengubah.