2010-07-16 116 views
24

有沒有辦法輕鬆獲取查詢結果的列類型?我閱讀了psql文檔,但我不認爲它支持。理想情況下,我能夠得到這樣的:顯示查詢結果列類型(PostgreSQL)

columna : text | columnb : integer 
----------------+------------------- 
oh hai   |    42 

有沒有一種方法,我可以得到無編碼的東西了這一信息?

+0

哈,我剛剛在#postgresql昨天問了這個問題(沒有回答) – 2010-07-16 18:25:32

+0

我不認爲'psql'可以直接顯示給你。但修改它應該相當容易。也許你可以編寫一個存儲過程來模擬這個過程。 – Wolph 2010-07-16 18:36:41

回答

3

我不認爲你可以完全打印你在樣本中的內容,除非你爲它寫了一個存儲過程。

一種方式做到這一點(兩個 「選擇」):

  1. create table my_table as select ...
  2. \d my_table
  3. select * from my_table
+0

是的,我只需要類型,不一定是那種格式。謝謝。 – 2010-07-19 15:09:24

+4

與使用'pg_typeof()'相比,這看起來相當麻煩和不方便。 – 2013-06-13 19:17:48

+3

@JayTaylor我同意。人生是一場旅程。 :-) – 2013-06-14 10:41:15

37

有可能得到任何SELECT查詢結果列類型。

考慮下面的查詢和結果,讓我們回答這個問題*「什麼是列類型all_ids的?」 *

SELECT array_agg(distinct "id") "all_ids" FROM "auth_user"; 

       all_ids 
-------------------------------------------- 
{30,461577687337538580,471090357619135524} 
(1 row) 

我們需要一種機制來推出的類型「all_ids」。

postgres mailing list archives上,我找到了一個稱爲pg_typeof的原生pg函數的引用。

用法示例:

SELECT pg_typeof(array_agg(distinct "id")) "all_ids" FROM "auth_user"; 

輸出:

all_ids 
---------- 
bigint[] 
(1 row) 

乾杯!