SQL INFORMATION_SCHEMA.COLUMNS 返回不完整的值

标签 sql postgresql psycopg2

我想请求所有的column_nametable_name和相应的data_type。我正在使用:

SELECT column_name, table_name, data_type FROM INFORMATION_SCHEMA.COLUMNS

但是,data_type 偶尔会返回 ARRAY。这在技术上是正确的,例如,double_precision[]

是否可以返回 double precision[] 而不是 ARRAY

最佳答案

数组类型可以通过udt_name请求:

data_type: character_data Data type of the array elements, if it is a built-in type, else USER-DEFINED (in that case, the type is identified in udt_name and associated columns). (Postgres documentation)

demo: db<>fiddle

CREATE TABLE test_table (
    id int,
    somearrays text[],
    somearrays_i int[]
);

SELECT 
    data_type, 
    udt_name 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'test_table'

结果:

data_type   udt_name
integer     int4
ARRAY       _text
ARRAY       _int4

关于SQL INFORMATION_SCHEMA.COLUMNS 返回不完整的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52643297/

相关文章:

Postgresql服务器远程连接

postgresql - 如何使用 psycopg2 获取 PostgreSQL 版本?

c# - 如何为名称中带有空格的列创建复杂数据类型?

c - 使用 libpq 获取 sizeof(PGconn)

sql - 在数组中查找与给定子数组匹配的位置

postgresql - 无法将容器化应用程序连接到容器化 postgres,接收到拨号 tcp 连接被拒绝的错误

python - Psycopg 在 Django 中缺少模块

SQL - 如何根据值执行计算

sql - 如何加速创建大型字母数字代码表的 SQL 脚本

sql - 查询包含oracle db中多个字段的年份