Sql Server数据库全文搜索脚本

----------------------------------------------------------------------------------------
--How to find the table and column name in the db that contains a certain record value--
----------------------------------------------------------------------------------------
   --DROP TABLE #searchresults
     
   DECLARE @SearchStr nvarchar(100)
   
   SET @SearchStr = 'PORECEIPTIAS'
   
   CREATE TABLE #searchresults (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
   SET NOCOUNT ON
   DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
   SET  @TableName = ''
   SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
   WHILE @TableName IS NOT NULL   
   BEGIN   
         SET @ColumnName = ''
         SET @TableName = 
         (   
               SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))   
               FROM INFORMATION_SCHEMA.TABLES   
               WHERE       TABLE_TYPE = 'BASE TABLE'  
                     AND   QUOTENAME(TABLE_SCHEMA) + '.' +	QUOTENAME(TABLE_NAME) > @TableName   
                     AND   OBJECTPROPERTY( OBJECT_ID(   
                                       QUOTENAME(TABLE_SCHEMA) + '.' +QUOTENAME(TABLE_NAME)   
                                        ), 'IsMSShipped') = 0    
         )   
         WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)   
         BEGIN   
               SET @ColumnName =   
               (   
                     SELECT MIN(QUOTENAME(COLUMN_NAME))   
                     FROM INFORMATION_SCHEMA.COLUMNS   
                     WHERE       TABLE_SCHEMA      = PARSENAME(@TableName,2)   
                           AND   TABLE_NAME  = PARSENAME(@TableName, 1)    
                           AND   DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar',  'numeric','decimal', 'double', 'money')   
                           AND   QUOTENAME(COLUMN_NAME) > @ColumnName   
               )   
               IF @ColumnName IS NOT NULL   
               BEGIN   
                     INSERT INTO #searchresults   
                     EXEC    
                    (   
                           'SELECT ''' + @TableName + '.' + @ColumnName +  ''', LEFT(' + @ColumnName + ', 3630)    
                           FROM ' + @TableName + ' (NOLOCK) ' + ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
                   	)   
               END   
         END      
   END    
   select * from #searchresults 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值