从系统目录中获取数据类型

从系统目录中获取数据类型

问题描述:

我正在尝试获取数据类型的名称,这些数据类型在系统目录的列描述中使用。从系统目录中获取数据类型

我是否正确地执行此任务?

select data_type 
from information_schema.columns 
group by data_type; 

谢谢你的时间。

+0

我会用'SELECT DISTINCT Data_type'并删除'GROUP BY'。在这种情况下,他们返回相同的东西,但是你不应该混淆两者,因为它们是完全不同的东西。 – Siyual

出于好奇(因为我已经有了源代码在这里)我参加了一个偷看,发现为\dT相当于src/bin/psql/describe.c在功能describeTypes生成的查询。

例如\dTS会是这样的:

SELECT n.nspname AS "Schema", 
    pg_catalog.format_type(t.oid, NULL) as "Name", 
    pg_catalog.obj_description(t.oid, 'pg_type') as "Description" 
FROM pg_catalog.pg_type t 
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace 
WHERE (t.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid)) 
    AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type el WHERE el.oid = t.typelem AND el.typarray = t.oid) 
    AND n.nspname <> 'information_schema' 
ORDER BY 1, 2;