
insert into tz2008_1_1 select 1,'a'
create table tz2008_1_2(id int,name varchar(50))
insert into tz2008_1_2 select 2,'b'
create table tz2008_1_3(id int,name varchar(50))
insert into tz2008_1_3 select 3,'c'
//解释下面的
declare @sql varchar(8000)
select @sql=isnull(@sql+' union all ','')+' select * from ['+name+']'
from sysobjects where xtype='u' and name like 'tz2008%'
exec(@sql)
能详细点吗?
比如先执行那个 select 和 那个from结合 sql变量的值 第一个select是查询还是赋值
在最后加一句
select @sql
看它的返回值就好理解了:
select * from [tz2008_1_1] union all select * from [tz2008_1_2] union all select * from [tz2008_1_3]
它的意思就是查询sysobjects表,条件是当表类型xtype=u并且name是以tz2008开头的,但这里仅赋值,把那些表的查询语句赋给@sql,当最后EXEC那里才是返回这个查询到底的值是什么。
select *from sysobjects where xtype='u'
代表查询当前数据衡并盯库中的用户表有哪些,如果把'u'改为's' 就是查询当前数据库中蔽前的系统表有哪些,like关键字就是模糊查询,比如查询A表中姓张的就这样:咐和
select name from A where name like'张%'
%是一个通配符,相当于DOS里的*,代表任何字符。
declare @sql varchar(8000)声明一个变量@sql 长度为8000 varchar类型
select @sql=isnull(@sql+' union all ','')+' select * from ['+name+']'
from sysobjects where xtype='u' and name like 'tz2008%'
将查询慧毁出来前猛备的值赋给声明知兆的变量@sql
查询sysobjects表,条件是xtype=u并且name是以tz2008开头的。
//解释下面的
declare @sql varchar(8000)
select @sql=isnull(@sql+' union all ','慎樱')+' select * from ['+name+']'
from sysobjects where xtype='u' and name like '旅孝弯tz2008%'
print @sql---显示生成的语句
这是把表名为tz2008开头的表名的结果集连起拆闷来
如:
select * from tz2008_1
union all
select * from tz20008_2
...............