Обсуждение: Can psql show the column type of a result ?

Поиск
Список
Период
Сортировка

Can psql show the column type of a result ?

От
"Nils O. Selåsdal"
Дата:
  Hello,
I'm wondering if there's a way to show the column type of a result with
psql, e.g.

 > select sum(r) from mytable;
    r
-------
  101.0

I'd like to see the type of the 'r' column.


Re: Can psql show the column type of a result ?

От
Richard Broersma
Дата:
On Wed, Sep 22, 2010 at 12:52 PM, "Nils O. Selåsdal"
<noselasd@asgaard.homelinux.org> wrote:
>  Hello,
> I'm wondering if there's a way to show the column type of a result with
> psql, e.g.
>
>> select sum(r) from mytable;
>   r
> -------
>  101.0
>
> I'd like to see the type of the 'r' column.
>
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>

From psql you can use:

\d mytable

sql to show this might look like:

SELECT a.attname,
  pg_catalog.format_type(a.atttypid, a.atttypmod),
  (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
   FROM pg_catalog.pg_attrdef d
   WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef),
  a.attnotnull, a.attnum
FROM pg_catalog.pg_attribute AS a
INNER JOIN pg_catalog.pg_class c
         ON C.oid = a.attrelid
WHERE  c.relname ~ '^(mytable)$' AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum;

--
Regards,
Richard Broersma Jr.

Visit the Los Angeles PostgreSQL Users Group (LAPUG)
http://pugs.postgresql.org/lapug

Re: Can psql show the column type of a result ?

От
Tom Lane
Дата:
=?UTF-8?B?Ik5pbHMgTy4gU2Vsw6VzZGFsIg==?= <noselasd@asgaard.homelinux.org> writes:
> I'm wondering if there's a way to show the column type of a result with
> psql, e.g.

>>> select sum(r) from mytable;
>     r
> -------
>   101.0

> I'd like to see the type of the 'r' column.

There's nothing built-in to psql, but you could modify the query, eg

select pg_typeof(sum(r)) from mytable;

(Adding "LIMIT 1" would be wise in most cases, though you don't need it
here.)

            regards, tom lane

Re: Can psql show the column type of a result ?

От
"Nils O. Selåsdal"
Дата:
  On 22.09.2010 23:26, Richard Broersma wrote:
> On Wed, Sep 22, 2010 at 12:52 PM, "Nils O. Selåsdal"
> <noselasd@asgaard.homelinux.org>  wrote:
>>   Hello,
>> I'm wondering if there's a way to show the column type of a result with
>> psql, e.g.
>>
>>> select sum(r) from mytable;
>>    r
>> -------
>>   101.0
>>
>> I'd like to see the type of the 'r' column.
>>
>>
>> --
>> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-general
>>
> > From psql you can use:
>
> \d mytable
>
> sql to show this might look like:
>
> SELECT a.attname,
>    pg_catalog.format_type(a.atttypid, a.atttypmod),
>    (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
>     FROM pg_catalog.pg_attrdef d
>     WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef),
>    a.attnotnull, a.attnum
> FROM pg_catalog.pg_attribute AS a
> INNER JOIN pg_catalog.pg_class c
>           ON C.oid = a.attrelid
> WHERE  c.relname ~ '^(mytable)$' AND a.attnum>  0 AND NOT a.attisdropped
> ORDER BY a.attnum;
>
This is ok for showing tables, but insufficient for showing the type of
a result set, which might
differ from the table being queried ,depending on what
operators/constants/functions a query uses to pull out data
  - which was my current problem.