从系统目录中获取数据类型
问题描述:
我正在尝试获取数据类型的名称,这些数据类型在系统目录的列描述中使用。从系统目录中获取数据类型
我是否正确地执行此任务?
select data_type
from information_schema.columns
group by data_type;
谢谢你的时间。
答
出于好奇(因为我已经有了源代码在这里)我参加了一个偷看,发现为\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;
我会用'SELECT DISTINCT Data_type'并删除'GROUP BY'。在这种情况下,他们返回相同的东西,但是你不应该混淆两者,因为它们是完全不同的东西。 – Siyual