Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Show query result column types (PostgreSQL)

Is there a way to easily get the column types of a query result? I read the psql documentation, but I don't think it supports that. Ideally, I'd be able to get something like:

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

Is there a way I can get this information without coding something up?

like image 398
Justin K Avatar asked Jul 16 '10 18:07

Justin K


People also ask

How do I get column names in PostgreSQL?

SELECT * FROM information_schema. columns WHERE table_schema = 'your_schema' AND table_name = 'your_table' ; Note: As per the example above, make sure the values are enclosed within quotes.

How do you DESC a table in PostgreSQL?

PostgreSQL describe table is defined as check the structure of table, we can describe the structure of table by using \d and table name command in PostgreSQL. In PostgreSQL describe table statement is not present like MySQL instead of describe we have using \d table name and \d+ table name.

How do I change the column type in PostgreSQL?

First, specify the name of the table to which the column you want to change belongs in the ALTER TABLE clause. Second, give the name of column whose data type will be changed in the ALTER COLUMN clause. Third, provide the new data type for the column after the TYPE keyword.


1 Answers

It is possible to get any SELECT query result column type.

Example

Given the following query and result, let's answer the question *"What is the column type of all_ids?"*

SELECT array_agg(distinct "id") "all_ids" FROM "auth_user";                   all_ids --------------------------------------------  {30,461577687337538580,471090357619135524} (1 row) 

We need a mechanism to unveil the type of "all_ids".

On the postgres mailing list archives I found reference to a native pg function called pg_typeof.

Example usage:

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

Output:

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

Cheers!

like image 139
Jay Taylor Avatar answered Oct 09 '22 05:10

Jay Taylor