本文主要是介绍sql 遍历所有表中 某项 值为已知数的查询语句,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
sql 遍历所有表中 某项 值为已知数的查询语句
2008-3-18 10:13
提问者: 风之辟尘 | 浏览次数:1972次
比如,我想找到,数据库中值为123的所在表
问题补充:
二楼的兄弟 如果是包含123的值呢? 比如45123,12345 而且返回的不是所在表名,是字段名 我试过了,可能我没说清楚,我要的是所在表名 _____________________________ 我又试了一遍,确实是经典,只要能返回表名就好了。
2008-3-21 14:26
满意回答 即然经典,那就多加分啦,只要输出表名: =============================== ALTER proc Full_Search(@string varchar(50)) as begin declare @tbname varchar(50) declare tbroy cursor for select name from sysobjects where xtype= 'u ' --第一个游标遍历所有的表 open tbroy fetch next from tbroy into @tbname while @@fetch_status=0 begin declare @colname varchar(50) declare colroy cursor for select name from syscolumns where id=object_id(@tbname) and xtype in ( select xtype from systypes where name in ( 'varchar ', 'nvarchar ', 'char ', 'nchar ') --数据类型为字符型的字段 ) --第二个游标是第一个游标的嵌套游标,遍历某个表的所有字段 open colroy fetch next from colroy into @colname while @@fetch_status=0 begin declare @sql nvarchar(1000),@j int select @sql= 'select @i=count(1) from ' +@tbname + ' where '+ @colname+ ' like '+ '''%'+@string+ '%''' exec sp_executesql @sql,N'@i int output',@i=@j output --输出满足条件表的记录数 if @j> 0 BEGIN select 包含字串的表名=@tbname --exec( 'select distinct '+@colname+' from ' +@tbname + ' where '+ @colname+ ' like '+ '''%'+@string+ '%''') END fetch next from colroy into @colname end close colroy deallocate colroy fetch next from tbroy into @tbname end close tbroy deallocate tbroy end go exec Full_Search '123'
这篇关于sql 遍历所有表中 某项 值为已知数的查询语句的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!