SQL SERVER如何删除以xx开头的所有表

SQL SERVER如何删除以xx开头的所有表

SQL SERVER如何删除以xx开头的表呢?运行下面的sql脚本就可以实现(任选一种)。

 方法一:运行下面的存储过程可以实现SQLServer如何删除以xx开头的所有表 

   注:将下方的table_name like 'xx_%' 换成你的表即可 (多一个下换线)

--将下方的table_name like 'xx_%' 换成你的表即可
--如果表名含有中文,就需要用nvarchar 和 N''
declare cur cursor
read_only
for select distinct table_name from information_schema.columns where table_name like N'xx_%'

declare @name nvarchar(40),@sql nvarchar(1000)
open cur

fetch next from cur into @name
while (@@fetch_status =0)
   begin
   set @sql ='DROP TABLE ' + @name
   exec (@sql)
   fetch next from cur into @name
end

close cur
deallocate cur
go

执行完成后,刷新一下表,就可以看到原来的表已经被彻底删除掉了。  

 补充说明
1,英文SQLServer里有中文表名,会提示错误: Incorrect syntax near '?'. 

解决办法: --如果报错:Incorrect syntax near '?'.  ,只要将varchar(40)改为nvarchar(40),即可解决。

2,如果英文SQLServer里有中文表名,可执行成功但是刷新后xx开头的所有表都还在。

 解决办法: --执行成功但没有删除任何中文名的表, 只要将 like 'XX_%' 改为 like N'XX_%',即可解决。

方法二:运行下面的sql脚本可以实现SQLServer如何删除以xx开头的所有表 

   注:将下方的table_name like 'xx_%' 换成你的表即可 (多一个下换线)

--如果表名含有中文,就需要用nvarchar 和 N''
DECLARE @strSQL NVARCHAR(MAX)
SET @strSQL=''
SELECT @strSQL=@strSQL+'drop table '+[name] from sysobjects 
WHERE [type]='U' and (([name] like N'XX_%') )
EXEC(@strSQL)

  

 

··

·

人生只若初见................
原文地址:https://www.cnblogs.com/05-hust/p/15405800.html