SELECT c.relname AS ""table_name"",a.attnum AS ""ordinal_position"", a.attname AS column_name, t.typname AS udt_name, CASE WHEN t.typcategory = 'C' THEN a.atttypmod - 4 ELSE NULL END AS character_maximum_length, CASE WHEN t.typcategory = 'N' THEN (a.atttypmod - 4) >> 16 ELSE NULL END AS numeric_precision, CASE WHEN t.typcategory = 'N' THEN (a.atttypmod - 4) & 65535 ELSE NULL END AS numeric_scale ,case WHEN a.attnotnull='f' then 'YES' else 'NO' END AS is_nullable FROM pg_attribute AS a JOIN pg_class AS c ON a.attrelid = c.oid JOIN pg_type AS t ON a.atttypid = t.oid WHERE c.relkind = 'm' -- 只查询物化视图 AND lower(c.""relname"") = lower(@tableName) AND a.attnum > 0 UNION ALL SELECT ""table_name"" ,""ordinal_position"",""column_name"",""udt_name"",""character_maximum_length"",""numeric_precision"",""numeric_scale"",""is_nullable"" FROM information_schema.COLUMNS col where lower(""table_name"") = lower(@tableName)