Re: how can I get the length of columns of a table by system tables/views
От | Tom Lane |
---|---|
Тема | Re: how can I get the length of columns of a table by system tables/views |
Дата | |
Msg-id | 10512.1315576630@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: how can I get the length of columns of a table by system tables/views (Raghavendra <raghavendra.rao@enterprisedb.com>) |
Список | pgsql-admin |
Raghavendra <raghavendra.rao@enterprisedb.com> writes: > On Wed, Sep 7, 2011 at 8:50 PM, shuaixf <shuaixf@gmail.com> wrote: >> According to pg_class, pg_attribute, pg_type, I can get the tablename, >> column name, column type >> however, how to get the length of columns of a table by system >> tables/views? > select pg_column_size(name) from tb; That would provide the physical size of individual values. I think what the OP was after was how to get the declared length limit of a column. That's encoded in pg_attribute.atttypmod. Rather than hard-wiring knowledge of the way it's encoded, it's best to rely on format_type(), which knows the rules: regression=# \d varchar_tbl Table "public.varchar_tbl" Column | Type | Modifiers --------+----------------------+----------- f1 | character varying(4) | regression=# select format_type(atttypid, atttypmod) from pg_attribute where attrelid = 'varchar_tbl'::regclass and attname= 'f1'; format_type ---------------------- character varying(4) (1 row) regards, tom lane
В списке pgsql-admin по дате отправления: