Joh*_*ohn 2 postgresql postgresql-9.3
我遇到了一个奇怪的地方,PostgreSQL在表中设置了data_type
to 。我做了以下查询以获得一些见解:ARRAY
information_schema.columns
SELECT * FROM information_schema.columns
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
AND table_name='__table_name__';
Run Code Online (Sandbox Code Playgroud)
我注意到了该udt_name
列,想知道它是否是确定该列数据是什么类型的数组的可靠方法?
SELECT column_name, data_type, udt_name FROM information_schema.columns
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
AND table_name='__table_name__';
Run Code Online (Sandbox Code Playgroud)
一种选择是简单地转换udt_name
为 a regtype
:
SELECT column_name, data_type, udt_name::regtype
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name='table_name';
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用 function format_type()
,但这需要oid
数据类型的 :
select c.attname, pg_catalog.format_type(c.atttypid, NULL) as data_type
from pg_attribute c
join pg_class t on c.attrelid = t.oid
join pg_namespace n on t.relnamespace = n.oid
where t.relname = 'table_name' -- your table name
and n.nspname = 'public' -- table schema
and c.attnum >= 0 -- exclude internal columns
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1734 次 |
最近记录: |