2015-07-10 139 views
0

在pagila示例数据库里面的电影表有列名为release_year与数据类型年,但是当我查询此列数据类型使用information_schema我得到整数,因为它的数据类型是什么问题?我已经使用的查询information_schema.columns返回不同的数据类型。

select c.column_name,c.data_type 
from information_schema.columns c 
where c.table_name = 'film' 
; 

如何获取实际的数据类型?

+0

你肯定不会有在不同的模式的多个结果?或者也许''电影“vs”电影“大小写敏感性问题? –

+2

是的。它看起来像某人创建了一个名为“年”的域,并且该information_schema包含基础数据类型。 – sumit

+0

information_schema.columns上有一个名为domain_name的列,其中包含“年”。你也应该发表你的评论作为答案并接受它。 – Gary

回答

1

我有使用此查询的答案:

SELECT 
    a.attname as "Column", 
    pg_catalog.format_type(a.atttypid, a.atttypmod) as "Datatype" 
FROM 
    pg_catalog.pg_attribute a 
WHERE 
    a.attnum > 0 
    AND NOT a.attisdropped 
    AND a.attrelid = (
     SELECT c.oid 
     FROM pg_catalog.pg_class c 
      LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace 
     WHERE c.relname ~ '^(table_name)$' 
      AND pg_catalog.pg_table_is_visible(c.oid) 
    ) 
; 

enter code here