2016-09-21 36 views
0

我需要知道一個表的列類型名,到目前爲止,我使用這個查詢:如何獲得正確的柱型名稱?

SELECT column_name as name, 
     data_type as type 
FROM information_schema.columns 
WHERE table_name = 'MY_TABLE'; 

的問題是,數據類型,如geometry(POSTGIS)返回USER-DEFINED代替geometry

有沒有辦法獲得正確的列類型名稱?

+0

您是否需要使用SQL查詢來查找類型?如果沒有,在'psql'中不輸入'\ d MY_TABLE'是否適合你? – redneb

+0

@redneb我需要在查詢中做到這一點,如果posible –

+0

我不知道這是否會工作,但你可以嘗試使用'pg_typeof'函數。它需要一個_value_並將其類型作爲字符串返回。所以缺點是你需要找到這樣的值,這可能是一個問題,例如如果表是空的。 – redneb

回答

1

我現在不能測試此權利,但根據documentationinformation_schema.columns

data_type該字段的

數據類型,如果它是一個內置類型,或數組,如果它是 某些數組(在這種情況下,請參閱視圖element_types),否則 用戶定義(在這種情況下,該類型在udt_name和 關聯列中標識)。如果該列基於域,則此列 引用該域下的類型(並且該域在domain_name和相關列中標識爲 )。

所以也許列udt_name包含你想要的。

+0

我會盡快嘗試。謝謝!! –

相關問題