gpt4 book ai didi

postgresql - 如何获取 Postgres 中数组数据类型的长度?

转载 作者:行者123 更新时间:2023-11-29 14:00:45 27 4
gpt4 key购买 nike

我可以获得如下 Postgres 数据类型的长度、精度和小数位数,

  SELECT c.column_name, c.data_type, c.character_maximum_length, c.numeric_precision
c.numeric_scale, e.data_type AS element_type
FROM information_schema.columns c
LEFT JOIN information_schema.element_types e
ON ((c.table_catalog, c.table_schema, c.table_name, 'TABLE', c.dtd_identifier) =
(e.object_catalog, e.object_schema, e.object_name, e.object_type,
e.collection_type_identifier))

WHERE c.table_schema ='Schema' AND c.table_name ='Table'

但是我无法获取所有数组数据类型(如 CHAR[]、BIT VARYING[]、VARCHAR[] 等的长度、精度和比例。

在 element_types 的帮助下,我几乎完成了正确获取数组数据类型的工作,但该 View 无法帮助我获取数组数据类型的长度、精度和比例。

请让我知道我们对此的评论。

注意:我使用的是 Postgres 9.2

谢谢,拉维

最佳答案

我试过了,对我有用

mickey=# CREATE TABLE Table1 ( Column1 CHAR(5), Column2 CHAR(12)[ ] );
CREATE TABLE
mickey=# \d table1

Table "public.table1"
Column | Type | Modifiers
---------+-----------------+-----------
column1 | character(5) |
column2 | character(12)[] |

mickey=# SELECT
col_attr.attname as "ColumnName",
pg_catalog.format_type(col_attr.atttypid, col_attr.atttypmod) as "DataType"
FROM pg_catalog.pg_attribute col_attr
WHERE
col_attr.attnum > 0 AND NOT col_attr.attisdropped
AND col_attr.attrelid = ( SELECT cls.oid FROM pg_catalog.pg_class cls LEFT JOIN pg_catalog.pg_namespace ns ON ns.oid = cls.relnamespace WHERE cls.relname = 'table1');

ColumnName | DataType
------------+-----------------
column1 | character(5)
column2 | character(12)[]
(2 rows)

mickey=#

关于postgresql - 如何获取 Postgres 中数组数据类型的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19512363/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com