我想请求所有的column_name
、table_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)
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/