PG數據庫獲取所有視圖表及物化視圖的列屬性sql

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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章