小编典典

删除名称以某个字符串开头的所有表

all

如何删除名称以给定字符串开头的所有表?

我认为这可以通过一些动态 SQL 和INFORMATION_SCHEMA表来完成。


阅读 55

收藏
2022-08-29

共1个答案

小编典典

如果数据库中有多个所有者,您可能需要修改查询以包含所有者。

DECLARE @cmd varchar(4000)
DECLARE cmds CURSOR FOR
SELECT 'drop table [' + Table_Name + ']'
FROM INFORMATION_SCHEMA.TABLES
WHERE Table_Name LIKE 'prefix%'

OPEN cmds
WHILE 1 = 1
BEGIN
    FETCH cmds INTO @cmd
    IF @@fetch_status != 0 BREAK
    EXEC(@cmd)
END
CLOSE cmds;
DEALLOCATE cmds

这比使用生成脚本加运行的两步方法更干净。但是脚本生成的一个优点是它使您有机会在实际运行之前查看将要运行的全部内容。

我知道如果我要针对生产数据库执行此操作,我会尽可能小心。

编辑 代码示例已修复。

2022-08-29