我在SQL Server中有一个数据库,其中有许多类似的表,例如dbo.Dos_150602_xyz
。我尝试通过键入以下内容仅删除其中包含1506的表:
drop table dbo.Dos_1506*;
但那并没有奏效。我怎么能这样做?
感谢。
答案 0 :(得分:1)
只是为OP做一些事情。
示例表创建脚本:
create table table_pattern_name_1 ( s1 varchar(20), n1 int );
create table table_pattern_name_2 ( s1 varchar(20), n1 int );
create table table_pattern_name_3 ( s1 varchar(20), n1 int );
create table table_pattern_name_4 ( s1 varchar(20), n1 int );
表删除脚本:
declare @cmd varchar(4000)
declare cmds cursor for
select 'drop table [' + Table_Name + ']'
from INFORMATION_SCHEMA.TABLES
where Table_Name like 'table_pattern_name_%'
open cmds
while 1=1
begin
fetch cmds into @cmd
if @@fetch_status != 0 break
print @cmd
exec(@cmd)
end
close cmds;
deallocate cmds
SSMS输出:
drop table [table_pattern_name_1]
drop table [table_pattern_name_2]
drop table [table_pattern_name_3]
drop table [table_pattern_name_4]
如果这适用于您的示例,请告诉我。
谢谢, 马特琼斯 Microsoft SQL Server