我的SQL 2008数据库中有3000多个表,其名称如下所示,所有表都以tempBinary_
开头,我需要以编程方式删除,我该怎么做?
我不知道我是否更喜欢SQL脚本中的解决方案或使用LINQtoSQL,我想两者都没问题。
tempBinary_002c90322f4e492795a0b8a14e2f7c99
tempBinary_0039f7db05a9456f96eb3cd6a788225a
tempBinary_0057da9ef0d84017b3d0bbcbfb934fb2
我之前在列上使用了Like,但我不知道它是否也适用于表名。 也许像这样的地方,使用LIKE,可以做到吗?我不知道。
Use [dbo].[database_name]
DROP TABLE table_name
WHERE table_name LIKE 'tempBinary_%'
有什么想法吗?
答案 0 :(得分:2)
declare @stmt varchar(max) = ''
declare @tbl_name varchar(255)
DECLARE tbl_cursor CURSOR FORWARD_ONLY READ_ONLY
FOR select name
from sysobjects
where xtype='u' and name like 'tempBinary%'
OPEN tbl_cursor
FETCH NEXT FROM tbl_cursor
INTO @tbl_name;
WHILE @@FETCH_STATUS = 0
BEGIN
set @stmt = @stmt + 'drop table ' + @tbl_name + ';' + CHAR(13)
FETCH NEXT FROM tbl_cursor
INTO @tbl_name
end
CLOSE tbl_cursor;
DEALLOCATE tbl_cursor;
execute sp_sqlexec @stmt