查找数据库指定数据的数据表和字段名称SQL语句

Code:
  1. /*       
  2. 查找数据库指定数据的数据表和字段名称SQL语句       
  3. 方法一:   
  4. */       
  5. declare @str varchar(100)       
  6.   
  7. set @str='11111111111'  --要搜索的字符串       
  8. declare @s varchar(8000)       
  9. declare tb cursor local for      
  10.     select 'if exists(select 1 from ['+b.name+'] where ['+a.name+'] like ''%'+@str+'%'')       
  11.         print '' ['+b.name+'].['+a.name+']'''       
  12.     from syscolumns a join sysobjects b on a.id=b.id       
  13.     where b.xtype='U' and a.status>=0       
  14.         and a.xusertype in(175,239,231,167)       
  15. open tb       
  16. fetch next from tb into @s       
  17. while @@fetch_status=0       
  18. begin      
  19.     exec(@s)       
  20.     fetch next from tb into @s       
  21. end      
  22. close tb       
  23. deallocate tb      
  24.   
  25. /*方法二:*/   
  26.   
  27. CREATE PROCEDURE [dbo].[SP_FindValueInDB]   
  28. (   
  29.     @value VARCHAR(1024)   
  30. )           
  31. AS  
  32. BEGIN  
  33.     -- SET NOCOUNT ON added to prevent extra result sets from   
  34.     -- interfering with SELECT statements.   
  35. SET NOCOUNT ON;   
  36. DECLARE @sql VARCHAR(1024)    
  37. DECLARE @table VARCHAR(64)    
  38. DECLARE @column VARCHAR(64)    
  39.   
  40. CREATE TABLE #t (    
  41.     tablename VARCHAR(64),    
  42.     columnname VARCHAR(64)    
  43. )    
  44.   
  45. DECLARE TABLES CURSOR    
  46. FOR    
  47.   
  48.     SELECT o.name, c.name    
  49.     FROM syscolumns c    
  50.     INNER JOIN sysobjects o ON c.id = o.id    
  51.     WHERE o.type = 'U' AND c.xtype IN (167, 175, 231, 239)    
  52.     ORDER BY o.name, c.name    
  53.   
  54. OPEN TABLES    
  55.   
  56. FETCH NEXT FROM TABLES    
  57. INTO @table, @column    
  58.   
  59. WHILE @@FETCH_STATUS = 0    
  60. BEGIN    
  61.     SET @sql = 'IF EXISTS(SELECT NULL FROM [' + @table + '] '    
  62.     SET @sql = @sql + 'WHERE RTRIM(LTRIM([' + @column + '])) LIKE ''%' + @value + '%'') '    
  63.     SET @sql = @sql + 'INSERT INTO #t VALUES (''' + @table + ''', '''    
  64.     SET @sql = @sql + @column + ''')'    
  65.   
  66.     EXEC(@sql)    
  67.   
  68.     FETCH NEXT FROM TABLES    
  69.     INTO @table, @column    
  70. END    
  71.   
  72. CLOSE TABLES    
  73. DEALLOCATE TABLES    
  74.   
  75. SELECT *    
  76. FROM #t    
  77.   
  78. DROP TABLE #t    
  79.   
  80. END  
  81.   
  82. exec SP_FindValueInDB '要查找的字符串'  

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值