当前位置: 代码迷 >> Sql Server >> 怎么用union all循环动态表
  详细解决方案

怎么用union all循环动态表

热度:29   发布时间:2016-04-24 09:44:09.0
如何用union all循环动态表?
数据库里每月生成一张表,比如TABLE201401/TABLE201402/TABLE201403.......TABLE201411,前面的字符串都一样,只是后面是变化的,用年度和月份来表示,下个月了就是TABLE201412,我想把数据库里所有的表的数据全部调出来,知道用union all,但不知道如何写动态语句,求教各位了,谢谢!
------解决思路----------------------
DECLARE @sql varchar(max)

SET @sql = ''

SELECT @sql = @sql + 'UNION ALL
SELECT * FROM '+name+'
'
  FROM sys.objects
 WHERE type='U'
   AND name LIKE 'TABLE20%' --应没有2000年之前的表吧

--SELECT CHARINDEX('SELECT',@SQL)
SET @sql = STUFF(@sql,1,11,'')
--PRINT @sql

EXEC(@sql)

------解决思路----------------------
DECLARE @SQL VARCHAR(MAX)
SET @SQL=''
SELECT @SQL=@SQL+'UNION ALL SELECT * FROM['+[name]+']' FROM SYS.SYSOBJECTS WHERE type='U'AND [name]LIKE'TABLE20%'
SET @SQL=STUFF(@SQL,1,10,'')
EXEC(@SQL)
LIKE'TABLE20%'是条件,如果不够严格,你可以根据自己的需要调整