例如如下:
cdd_hwTD_RNC_DSPTCARRIER_15_151013
cdd_hwTD_RNC_DSPTCARRIER_15_151014
cdd_hwTD_RNC_DSPTCARRIER_15_151015
cdd_hwTD_RNC_DSPTCARRIER_15_151016
cdd_hwTD_RNC_DSPTCARRIER_15_151017
cdd_hwTD_RNC_DSPTCARRIER_15_151018
cdd_hwTD_RNC_NodeB_15_151013
cdd_hwTD_RNC_NodeB_15_151014
cdd_hwTD_RNC_NodeB_15_151015
cdd_hwTD_RNC_NodeB_15_151016
cdd_hwTD_RNC_NodeB_15_151017
cdd_hwTD_RNC_NodeB_15_151018
cdd_hwTD_RNC_RNC_15_151013
cdd_hwTD_RNC_RNC_15_151014
cdd_hwTD_RNC_RNC_15_151015
cdd_hwTD_RNC_RNC_15_151016
cdd_hwTD_RNC_RNC_15_151017
cdd_hwTD_RNC_RNC_15_151018
想删除151013~151017之间的所有数据表,最后达到这样的效果:
cdd_hwTD_RNC_DSPTCARRIER_15_151018
cdd_hwTD_RNC_NodeB_15_151018
cdd_hwTD_RNC_RNC_15_151018
------解决思路----------------------
SELECT 'drop table ' + name
FROM sys.tables
WHERE name LIKE 'cdd_hwTD_RNC_%'
AND RIGHT(name, 6) BETWEEN '151013' AND '151017'
执行后,得到的结果类似
drop table xxxxx
drop table xxxxxa
copy 然后,执行这些代码即可。 执行前,lz仔细核对下是不是你要删除的表。
------解决思路----------------------
可以用动态语句:
declare @sql varchar(8000)
set @sql = ''
SELECT @sql = @sql + 'drop table ' + name +';'
FROM sys.objects
WHERE (name LIKE 'cdd_hwTD_RNC_DSPTCARRIER_%' or
name LIKE 'cdd_hwTD_RNC_NodeB_%' or
name LIKE 'cdd_hwTD_RNC_RNC_%')
and type_desc = 'USER_TABLE'
AND NAME LIKE '%15101[3-7]'
select @sql
exec(@sql)