查询该值属于哪个表是哪个字段

时间:2021/4/2 13:32:00来源:互联网 作者:flyso 点击: 929 次

SET ANSI_NULLS ON

GO


SET QUOTED_IDENTIFIER ON

GO


 CREATE  PROCEDURE  [dbo].[SP_FindValueInDB]

(

     @value  VARCHAR (1024)

AS

BEGIN

     SET  NOCOUNT  ON ;

     DECLARE  @sql  VARCHAR (1024) 

     DECLARE  @table  VARCHAR (64) 

     DECLARE  @column  VARCHAR (64) 

     CREATE  TABLE  #t ( 

         tablename  VARCHAR (64), 

         columnname  VARCHAR (64) 

     ) 

     DECLARE  TABLES  CURSOR  FOR 

     SELECT  o. name , c. name  FROM  syscolumns c 

     INNER  JOIN  sysobjects o  ON  c.id = o.id 

     WHERE  o.type =  'U'  AND  c.xtype  IN  (167, 175, 231, 239) 

     ORDER  BY  o. name , c. name 

     OPEN  TABLES 

         FETCH  NEXT  FROM  TABLES 

         INTO  @table , @column 

         WHILE @@FETCH_STATUS = 0 

         BEGIN 

             SET  @sql =  'IF EXISTS(SELECT NULL FROM ['  + @table  +  '] ' 

             SET  @sql = @sql +  'WHERE RTRIM(LTRIM(['  + @column  +  '])) LIKE ''%'  + @value +  '%'') ' 

             SET  @sql = @sql +  'INSERT INTO #t VALUES ('''  + @table  +  ''',''' 

             SET  @sql = @sql + @column  +  ''')' 

             EXEC (@sql) 

             FETCH  NEXT  FROM  TABLES 

             INTO  @table , @column 

         END 

     CLOSE  TABLES 

     DEALLOCATE  TABLES 

     SELECT  *  FROM  #t 

     DROP  TABLE  #t 

End

GO



EXEC [SP_findvalueindb] '此处输入的是已知的值'

Copyright © 2005 - 2016 flyso.cn. 飞搜 版权所有 鄂ICP备11002783号-3