Найти все таблицы, где столбец похож:
SELECT c.name AS 'ColumnName'
,t.name AS 'TableName'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%SubId%'
ORDER BY TableName
,ColumnName;
Найти все таблицы, где имя таблицы, например:
SELECT c.name AS 'ColumnName'
,t.name AS 'TableName'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE t.name LIKE '%tbl%'
ORDER BY TableName
,ColumnName;
Найти все таблицы в определенной схеме:
SELECT t.name
FROM sys.tables AS t
INNER JOIN sys.schemas AS s
ON t.[schema_id] = s.[schema_id]
WHERE s.name = N'cmc';
Когда у вас есть таблицы, которые нужно удалить, вы можете просто написать операторы удаления для каждой из них. Или вы можете использовать что-то вроде следующего:
SELECT c.name AS 'ColumnName'
,t.name AS 'TableName',
'drop table ' + t.name
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE t.name LIKE '%tbl%'
ORDER BY TableName
,ColumnName;
EDIT
Ниже выбора с чуть более подробной информацией о предложении where:
SELECT c.name AS 'ColumnName'
,t.name AS 'TableName'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE
t.name LIKE 'tbl%' -- where the table name starts with the letters 'tbl'
OR t.name LIKE 'tbl%123%' -- where the table name starts with the letters 'tbl' and has the numbers '123' in the table name
OR c.name LIKE '%colName%' -- where a column has a name that contains the letters 'colName'
ORDER BY TableName
,ColumnName;