我想请求所有的column_names,table_names和相应的data_types。我使用:

SELECT column_name, table_name, data_type FROM INFORMATION_SCHEMA.COLUMNS

但是,data_type偶尔返回ARRAY。从技术上讲,这是正确的,例如,这些是double_precision[]
是否可以返回double precision[]而不是ARRAY

最佳答案

数组类型可以由udt_name请求:
数据类型:数组元素的字符数据类型,如果它是
内置类型,否则由用户定义(在这种情况下,将标识该类型
在udt_name和相关列中)。(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 - SQL INFORMATION_SCHEMA.COLUMNS返回不完整的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52643297/

10-16 21:00