我需要删除以字符串“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;
答案 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;