关于sql中删除以指定字符开头的表总结。
在工作中,经常遇到将数据导入sql中。例如excel,access等等。长期以往,类似数据越来越多。而自己也不想一个一个删除。此时本片文章对你就有效了。本文列举两种方法。
这边文章有一个前提,就是导入的表都是以固定字符开头,例如楼主都是以WU_开头。
1,常规思路,找出表。然后执行语句删除。语句如下:(也可用游标)
--1,建立临时表存储数据 CREATE TABLE #tbDelete ( ID INT IDENTITY(1, 1) , TableName NVARCHAR(36) ) --2,插入数据 INSERT INTO #tbDelete(TableName ) SELECT name FROM sys.tables WHERE name LIKE ‘WU_%‘ AND OBJECTPROPERTY(object_id,‘IsUserTable‘)=1 --3,循环该表,并动态删除 DECLARE @i INT= 1 , @count INT , @sqlDelete NVARCHAR(1000) , @tableName NVARCHAR(36) SELECT @count = COUNT(*) FROM #tbDelete WHILE ( @i < @count + 1 ) BEGIN SELECT @tableName = TableName FROM #tbDelete WHERE ID = @i SET @sqlDelete = ‘DROP TABLE ‘ + @tableName --动态执行 EXEC(@sqlDelete) SET @i += 1 END --4,删除临时表 DROP TABLE #tbDelete
2,利用微软的内部表迭代存储过程,语句如下:
EXEC sys.sp_MSforeachtable @command1 = N‘if‘‘?‘‘ like ‘‘/[dbo/]./[WU/_%‘‘ escape ‘‘/‘‘ and OBJECTPROPERTY(OBJECT_ID(‘‘?‘‘),‘‘IsUserTable‘‘)=1 DROP Table ? ‘
如果有其他的方法,欢迎大家指出,共同进步。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。