查找列如下的所有表:
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;
编辑
下面是一个关于 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;