Db2: запрос для поиска таблицы с другим именем столбца - PullRequest
0 голосов
/ 14 мая 2019

В моей базе данных все таблицы должны иметь столбец (скажем, «abc»), и я хочу выяснить таблицы, в которых нет этого столбца.Есть ли у нас такой запрос для выполнения этого требования?

База данных: Db2 v11.1 LUW

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Вы можете создать запрос к 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%'

Выше приведен только пример, а не оптимизирован.

0 голосов
/ 15 мая 2019

Только несистемные таблицы. Имя столбца должно быть в верхнем регистре, если вы не указали имя столбца как «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';
...