根据字段内容查找表名

--存储指定数据库中的表名
CREATE TABLE T(ID INT IDENTITY(1,1),T_NAME VARCHAR(100) NULL,rc int null)
--存储指定表的所有列名
CREATE TABLE T_c(ID INT IDENTITY(1,1),T_c VARCHAR(100) NULL,t_t varchar(20) null)
declare @t varchar(300) --表名
declare @t_c varchar(20)--栏位名称
declare @t_T varchar(20)--栏位所属表名
declare @sql varchar(8000)
/*******************************
处理思路:取出数据库中所用的表,外循环每个表
取表的所用列,内循环每个列是否有合符条件的数据,
有则保存该表名
*******************************/
--具体的实现细节如下:
declare cur_test cursor FOR select NAME from sysobjects where type='u'
open cur_test
fetch cur_test into @t
while @@fetch_status=0
 BEGIN
  insert into t_c(t_c,t_t) select name,@T  from syscolumns where id=object_id(@t)
  declare cur_c cursor for select t_c,t_t from t_c
  open cur_c
  fetch cur_c into @t_c,@t_t
  while @@fetch_status=0
   begin
    
    set @sql=isnull(@sql,'')+'insert into t(t_name )select  '''+@t_t+''' from '+ @t_t+' as a  where  exists(select * from '+@t_t+' where  a.ID ='+@t_t+'.ID AND '+ @t_c+' like ''%贵在坚持%'')'
print   @sql  
exec(@sql)
    set @sql=''
    fetch cur_c into @t_c,@t_t
   end
  close cur_c
  deallocate cur_c
  truncate table t_c

  fetch cur_test into @t
 end

 

CLOSE cur_test
DEALLOCATE cur_test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值