SQL2008查询问题
我要从sysobjects里面查找所有的以Y开头的表名(用户表),然后在这些表里面查找数据,要怎么写过程?
需要的是类似下面的结果(这个肯定是不行的):
select * from (select name from sysobjects where type='U' and name like 'Y%') where barcode='1234'
[解决办法]
先找出表名,再根据表去找数据
[解决办法]
declare @tb nvarchar(50),@sql nvarchar(2000)
select @tb=name from sysobjects where type='U' and name like 'Y%'
set @sql='select * from '+@tb+' where barcode=''1234'' '
exec(@sql)
如果你有一个以上y开头的表,需要写游标一个表一个表的查询
[解决办法]
搜一下 foreachtable
[解决办法]
把@tb改成table类型 然后判断遍历这个@tb也可以。
[解决办法]
不明白你这样写有什么意思,如果返回的是两个表呢。
declare @sql varchar(max)
set @sql = ''
select @sql = @sql+ ' select * from '+ t.name +'where barcode=''1234'' '
from sysobjects as t join sys.all_columns as c on t.id = c.object_id and t.type='U' and c.name ='barcode' and t.name like 'Y%'
exec (@sql)
------解决方案--------------------
--sql 2008有自己的目录视图
use dbname
go
select * from sys.tables
where name like 'y%'
[解决办法]
你的条件如果不是固定的(也就是where条件不固定),那就搞死你了,2楼的方法差不多了。