2016-11-16 62 views
0

我正在嘗試獲取數據類型的名稱,這些數據類型在系統目錄的列描述中使用。從系統目錄中獲取數據類型

我是否正確地執行此任務?

select data_type 
from information_schema.columns 
group by data_type; 

謝謝你的時間。

+0

我會用'SELECT DISTINCT Data_type'並刪除'GROUP BY'。在這種情況下,他們返回相同的東西,但是你不應該混淆兩者,因爲它們是完全不同的東西。 – Siyual

回答

0

出於好奇(因爲我已經有了源代碼在這裏)我參加了一個偷看,發現爲\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;