日期:2014-05-18  浏览次数:20745 次

如何在所有用户表中查找所需要的记录?
在一个数据库中有很多用户表,我想在这些用户表中按条件查找所需要的记录,该怎么做?
比如:我想查找用户编号=001和002的记录都在那些表中存在,这样的SQL 语句该怎样写。

在SQL SERVER 2000环境下。

------解决方案--------------------
用动态语句结合sysobjects表来查询.
------解决方案--------------------
SQL code
--不好意思 掉了个)号

declare @name nvarchar(100)
declare cur cursor for select name from sysobjects where type = 'U'
open cur
fetch next from cur into @name
WHILE @@FETCH_STATUS = 0
begin

  declare @sql nvarchar(500),@s varchar(5000)
  set @s =''
  set @sql='select @s=isnull(@s+''+'','''')+'''''',''''''+''+cast(isnull([''+name+''],'''''''') as varchar)'' from syscolumns where id=object_id('''+@name+''') and xtype in(175,239,99,231,35,167) '  
  exec sp_executesql @sql,N'@s varchar(5000) out',@s out
  if len(@s) > 0  
  exec('if exists(select 1 from (select '+ @s+' as col from ['+@name+']) b where 用户编号 in(''001'',''002'')) print '''+@name+'''')
  fetch next from cur into @name
end
close cur
DEALLOCATE cur