テーブルにフィールドがあるかどうかを判断する



SELECT 
  case when count(*) > 0 then 'true'
  else 'false'
  end	
FROM
(SELECT  
a.attname as Columns,  
pg_catalog.format_type(a.atttypid, a.atttypmod) as "Datatype"  
FROM  
pg_catalog.pg_attribute a  
WHERE  
a.attnum > 0  
AND NOT a.attisdropped  
AND a.attrelid = (  
SELECT c.oid  
FROM pg_catalog.pg_class c  
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace  
WHERE c.relname ~ '^(views)$'  
AND pg_catalog.pg_table_is_visible(c.oid)  
)) as a where a.Columns = 'ad_id';

前回のブログの記事を使ったSQLは、テーブル名と判断するカラム名を入力することで、trueまたはfalseを返すことで存在するかどうかを教えてくれます.