db2:查询以搜索具有不同列名称的表

时间:2019-05-14 11:52:56

标签: db2 db2-luw

在我的数据库中,所有表都应具有一列(假设为“ abc”),我想找出没有此列的表。我们是否有任何此类查询可以满足此要求?

数据库:Db2 v11.1 LUW

2 个答案:

答案 0 :(得分:1)

您可以针对SYSCAT.COLUMNS(和SYSCAT.TABLES)构建查询,以查找不具有该列的表:

select tabname from syscat.tables t1
where not exists
    (select colname from syscat.columns c
     where c.tabname=t1.tabname and colname='foo')
and tabname like 'SYSX%'

以上仅是示例,尚未优化。

答案 1 :(得分:0)

仅非系统表。除非您在创建表时故意将列名称指定为“ abc”(双引号),否则列名称必须为大写。

select tabschema, tabname 
from syscat.tables t
where not exists
(
select 1 
from syscat.columns c
where c.tabschema=t.tabschema and c.tabname=t.tabname 
and c.colname='ABC'
)
and tabschema not like 'SYS%'
and type='T';