「OID」をtext
に変換できます キャストするだけで- regtype コード>
(登録されたタイプのOIDサブタイプ)関数 pg_typeof()
。
Postgresは通常、データ型 regtype
の値を表示します text
として ユーザーに。例:
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(..)
修飾子を含むタイプを表示します。