SQL查询表名

由于数据库表太多,我知道其中一个表中某1列的值,如何查询出表名     比如:数据库名:test 某表的某列:name=张三                 查表名?

利用系统表SysObjects,SysColumns,SysTypes,利用游标,获取数据库里面的每个表,每个字段..然后逐一循环...最终得到表..

CREATE Proc up_GetTable 
As 
Begin 
Declare @Table NVARCHAR(30),@COL NVARCHAR(30),@Str NVARCHAR(2000) 
Declare @Tab Table (TabName NVARCHAR(30)) 
Declare tmpCur CurSor For 
Select A.NAME,B.NAME From SysObjects A INNER JOIN SYSCOLUMNS B ON A.ID=B.ID 
LEFT JOIN SYSTYPES C ON B.XTYPE=C.XTYPE 
WHERE C.NAME IN ('VARCHAR','NVARCHAR','CHAR','TEXT','NCHAR','NCHAR') 
AND A.xtype = 'U' 
Open tmpCur 
Fetch Next From tmpCur Into @Table,@COL 
While @@Fetch_Status=0 
Begin 
SET @Str=' DECLARE @TABLENAME NVARCHAR(30) ;SELECT @TABLENAME='+@COL+' FROM '+@Table +' WHERE '+@COL+'='''+'张三''' 
EXEC(@Str) 
IF @@ROWCOUNT>0 
INSERT INTO @Tab VALUES(@Table) 
Fetch Next From tmpCur Into @Table,@COL 
End 
Close tmpCur 
DealLocate tmpCur 
SELECT DISTINCT * FROM @Tab 
End

最后 Exec up_GetTable即可得到所有表.不管哪个字段,只要是存在张三记录的所有表的集合


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值