You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写PostgreSQL查询获取指定schema中不含特定数据类型列的表

PostgreSQL 查询指定 Schema 下无特定类型列表的解决方案

需求说明

查询 project schema 下所有不包含 integer 类型列的表,可灵活替换为其他需要排除的数据类型。


方案1:使用 NOT EXISTS 实现(推荐)

逻辑直观,查询性能更优,直接排除存在目标类型列的表即可:

SELECT DISTINCT table_name
FROM information_schema.columns c1
WHERE table_schema = 'project'
  AND NOT EXISTS (
    SELECT 1
    FROM information_schema.columns c2
    WHERE c2.table_schema = c1.table_schema
      AND c2.table_name = c1.table_name
      AND c2.data_type = 'integer' -- 此处替换为要排除的目标数据类型
);

方案2:基于现有聚合写法调整

和你当前的查询思路一致,按表分组后判断该表下是否从未出现过目标类型:

SELECT table_name
FROM information_schema.columns
WHERE table_schema = 'project'
GROUP BY table_name
HAVING COUNT(CASE WHEN data_type = 'integer' THEN 1 END) = 0;

注意事项

  • 数据类型名称需要和 information_schema.columns 中 data_type 字段的取值完全匹配,比如短写的 int 要替换为标准名 integer,varchar 要替换为 character varying 才能正确匹配
  • 如果需要同时排除多种类型,仅需在条件中新增对应判断即可,比如要同时排除 integer 和 text 类型,方案2的HAVING条件可修改为:
    HAVING COUNT(CASE WHEN data_type IN ('integer', 'text') THEN 1 END) = 0
    

内容的提问来源于stack exchange,提问作者speedy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:45:04