在整个数据库搜索某个字符串在哪个表的哪个字段中

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_search]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)   
  drop   procedure   [dbo].[p_search]   
  GO   
    
  /*--在整个数据库搜索某个字符串在哪个表的哪个字段中   
    
    
  /*--调用示例   
  use   pubs   
  exec   p_search   N'l'   
  --*/   
  create   proc   p_search   
  @str   Nvarchar(1000)   --要搜索的字符串   
  as   
  if   @str   is   null   return   
    
  declare   @s   Nvarchar(4000)   
  create   table   #t(表名   sysname,字段名   sysname)   
    
  declare   tb   cursor   local   for   
  select   s='if   exists(select   1   from   ['+replace(b.name,']',']]')+']   where   ['+a.name+']   like    N''%'+@str+'%'' )   
  print   ''所在的表及字段:   ['+b.name+'].['+a.name+']'''   
  from   syscolumns   a   join   sysobjects   b   on   a.id=b.id   
  where   b.xtype='U'   and   a.status>=0   
  and   a.xtype   in(175,239,99,35,231,167)   
  open   tb   
  fetch   next   from   tb   into   @s   
  while   @@fetch_status=0   
  begin   
  exec(@s)   
  fetch   next   from   tb   into   @s   
  end   
  close   tb   
  deallocate   tb   
  go   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值