删除以“1617”结尾的多个表

时间:2015-06-17 10:45:06

标签: sql sql-server

我需要删除以字符串“1617”结尾的多个表

我遇到过大量的程序来做这件事但是有一个简单的方法

我的表看起来像mytable1617,我有很多

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += '
DROP TABLE ' 
    + QUOTENAME(s.name)
    + '.' + QUOTENAME(t.name) + ';'
    FROM sys.tables AS t
    INNER JOIN sys.schemas AS s
    ON t.[schema_id] = s.[schema_id] 
    WHERE t.name LIKE '1617%';

PRINT @sql;
-- EXEC sp_executesql @sql;

2 个答案:

答案 0 :(得分:1)

此:

WHERE t.name LIKE '1617%';

正在寻找带有1617开始的表格。你想要:

WHERE t.name LIKE '%1617';

答案 1 :(得分:1)

只需更改搜索模式

即可
DECLARE @sql NVARCHAR(MAX) = N'';

    SELECT @sql += '
    DROP TABLE ' 
        + QUOTENAME(s.name)
        + '.' + QUOTENAME(t.name) + ';'
        FROM sys.tables AS t
        INNER JOIN sys.schemas AS s
        ON t.[schema_id] = s.[schema_id] 
        WHERE t.name LIKE '%1617'; --tables ending with 1617

    PRINT @sql;