如何用union all循环动态表?

yuzhifu1 2014-11-10 09:34:39
数据库里每月生成一张表,比如TABLE201401/TABLE201402/TABLE201403.......TABLE201411,前面的字符串都一样,只是后面是变化的,用年度和月份来表示,下个月了就是TABLE201412,我想把数据库里所有的表的数据全部调出来,知道用union all,但不知道如何写动态语句,求教各位了,谢谢!
...全文
935 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuzhifu1 2014-11-10
  • 打赏
  • 举报
回复
引用 6 楼 ky_min 的回复:
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,'')
SELECT @SQL--你把这儿的这个结果贴上来看下
--EXEC(@SQL)
SELECT @SQL--你把这儿的这个结果贴上来看下
可以了,谢谢!
还在加载中灬 2014-11-10
  • 打赏
  • 举报
回复
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,'')
SELECT @SQL--你把这儿的这个结果贴上来看下
--EXEC(@SQL)
SELECT @SQL--你把这儿的这个结果贴上来看下
--小F-- 2014-11-10
  • 打赏
  • 举报
回复
引用 3 楼 yuzhifu1 的回复:
[quote=引用 2 楼 ky_min 的回复:]
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%'是条件,如果不够严格,你可以根据自己的需要调整
用查询分析器执行,提示命令已完成,怎么样出来结果呀?[/quote] PRINT @SQL
yuzhifu1 2014-11-10
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao 的回复:
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)
报错,提示:服务器: 消息 170,级别 15,状态 1,行 1 第 1 行: '*' 附近有语法错误。
yuzhifu1 2014-11-10
  • 打赏
  • 举报
回复
引用 2 楼 ky_min 的回复:
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%'是条件,如果不够严格,你可以根据自己的需要调整
用查询分析器执行,提示命令已完成,怎么样出来结果呀?
还在加载中灬 2014-11-10
  • 打赏
  • 举报
回复
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%'是条件,如果不够严格,你可以根据自己的需要调整
Tiger_Zhao 2014-11-10
  • 打赏
  • 举报
回复
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)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧