关于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 = Nif‘‘?‘‘ like ‘‘/[dbo/]./[WU/_%‘‘ escape ‘‘/‘‘ and OBJECTPROPERTY(OBJECT_ID(‘‘?‘‘),‘‘IsUserTable‘‘)=1   DROP Table ?  


如果有其他的方法,欢迎大家指出,共同进步。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。