首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL2008查询有关问题

2013-07-09 
SQL2008查询问题我要从sysobjects里面查找所有的以Y开头的表名(用户表),然后在这些表里面查找数据,要怎么

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
[解决办法]
引用:

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开头的表,需要写游标一个表一个表的查询

把@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)

引用:
我要从sysobjects里面查找所有的以Y开头的表名(用户表),然后在这些表里面查找数据,要怎么写过程?

需要的是类似下面的结果(这个肯定是不行的):
select * from (select name from sysobjects where type='U' and name like 'Y%') where barcode='1234'

------解决方案--------------------



--sql 2008有自己的目录视图
use dbname
go
select * from sys.tables 
where name like 'y%'

[解决办法]
你的条件如果不是固定的(也就是where条件不固定),那就搞死你了,2楼的方法差不多了。

热点排行