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)
··
·
人生只若初见................