Bạn có thể chuyển đổi "OID" thành văn bản
chỉ bằng cách truyền - cung cấp OID (Mã nhận dạng đối tượng)
thực sự là một regtype
(kiểu con OID cho các loại đã đăng ký) như bạn sẽ nhận được từ hàm pg_typeof ()
.
Postgres thông thường sẽ hiển thị các giá trị của kiểu dữ liệu regtype
dưới dạng văn bản
cho người dùng. Ví dụ:
SELECT pg_typeof('2013-1-1'::date);
pg_typeof
-----------
date
Trong khi bên trong nó là một OID:
SELECT pg_typeof('2013-1-1'::date)::oid;
pg_typeof
-----------
1082
Nếu khách hàng của bạn không làm như vậy, bạn có thể ép buộc nó với một diễn viên rõ ràng:
SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;
Nhận loại của tất cả các cột từ danh mục hệ thống
Không rõ như thế nào bạn thực sự truy xuất các loại. Hãy xem xét truy vấn này để có đầy đủ thông tin:
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
Lưu ý rằng format_type (..)
hiển thị loại bao gồm cả bổ ngữ.