当前位置: 代码迷 >> Sql Server >> 求教大神如何批量删除特定的日期表!比较急求解
  详细解决方案

求教大神如何批量删除特定的日期表!比较急求解

热度:77   发布时间:2016-04-24 08:50:19.0
求教大神怎么批量删除特定的日期表!比较急~~求解
例如如下:
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)
  相关解决方案