+ -
当前位置:首页 → 问答吧 → 表名怎么用变量代替

表名怎么用变量代替

时间:2011-12-07

来源:互联网

我有N个SQL2000表,分别叫HH01,HH02,HH03,想做一个循环,分别把里面的内容放到一个临时表里,怎么弄

作者: yjqmaster   发布时间: 2011-12-07

字符串拼接.

SQL code
declare @sql varchar(4000)

select @sql = 'select * from '+ name  from  sys.tables where name like 'HH%'

exec (@sql)


大概就是这个意思, LZ参考

作者: OrchidCat   发布时间: 2011-12-07

SQL code
declare @sql varchar(4000)

select @sql =isnull(@sql+ ' union all select * from '+ name,
   'select * from into #tb'+ name')  
 from  sys.tables where name like 'HH%'

exec (@sql)



作者: ssp2009   发布时间: 2011-12-07

SQL code
declare @sql varchar(4000)

select @sql =isnull(@sql+ ' union all select * from '+ name,
   'select * from into #tb'+ name)  
 from  sys.tables where name like 'HH%'

exec (@sql)


作者: ssp2009   发布时间: 2011-12-07

引用楼主 yjqmaster 的回复:
我有N个SQL2000表,分别叫HH01,HH02,HH03,想做一个循环,分别把里面的内容放到一个临时表里,怎么弄

需要使用动态SQL.例如:
declare @sql as varchar(1000)
declare @tb as varchar(20)
set @tb = 某表名

set @sql = 'insert into 临时表 from ' + @tb

exec(@sql)

作者: dawugui   发布时间: 2011-12-07

SQL code

select * into #t from HHO1  --先产生空的#t临时表
go
--下面用拼字符串的方式产生动态sql语句,然后执行插入
declare @i int
set @i=1
declare @str varchar(max)
while @i<=10 
begin
  set @str=ISNULL(@str+' union all '+char(10),'')+'select * from HHO'+cast(@i as varchar)
  set @i=@i+1
end
set @str='insert into #t '+char(10)+@str
exec(@str)

作者: pengxuan   发布时间: 2011-12-07

动态sql

作者: geniuswjt   发布时间: 2011-12-07

SQL code

-try
Insert Into # From HHO1 Where 1<>1
sp_msforeachtable @command1="if ? like 'HHO%' Insert # Select * From ?"


作者: mustudent   发布时间: 2011-12-07