• 在数据库查询任意字符所在表和字段



    /*
    版本号: 20090509
    制作人: 叮叮猫
    QQ    : 115101062 ゞ哈廸厮こ吻
    你可以再任意数据库里面使用 但是需要你在 '就是我要找的东西'进行赋值
    同时,需要检查那个数据库  就在那里数据库里面执行  有问题 可以联系我
    */
    create table #myTable  
    (  
        tablename varchar(50),  
        tableNumname varchar(100)  
    )  
    go
    declare @delStr nvarchar(500)  
        set @delStr='就是我要找的东西' /*************这里是关键词*******************/ 
    /****************************************/ 
     
    /**********以下为操作实体************/ 
    set nocount on  
        declare @tableName nvarchar(100),@columnName nvarchar(100),@tbID  
        int,@iRow int,@iResult int 
        declare @sql nvarchar(500)  
     
    set @iResult=0  
    declare cur cursor for 
    select name,id from sysobjects where xtype='U'--查询出所有用户创建的表  
    --打开游标  
    open cur  
    fetch next from cur into @tableName,@tbID --同时遍历这些表  
     
    while @@fetch_status=0  
    begin  
     declare cur1 cursor for 
           --xtype in (35,231,167,239,175) 为char,varchar,nchar,nvarchar类型  
           select name from syscolumns where xtype in (35,231,167,239,175) and id=@tbID --查询表内数据为这几个类型的列名  
     open cur1 --打开游标  
     fetch next from cur1 into @columnName --遍历查询结果  
     while @@fetch_status=0  
     begin  
        --set @sql=' select '+@tableName+' from '+@tableName+' where '+@columnName+' like ''%'''+@delStr+'''%''  
      
        /* set @sql='update [' + @tableName + '] set ['+ @columnName +']= 
    replace(['+@columnName+'],'''+@delStr+''','''') where 
    ['+@columnName+'] like ''%'+@delStr+'%'''*/ 

        --set @sql='select '''+@tableName+''' from ['+@tableName+'] where ['+@columnName+'] like ''%'+@delStr+'%''' 
                                    
        set @sql='insert into #myTable  select '''+@tableName+''','''+@columnName+''' from ['+@tableName+'] where ['+@columnName+'] like ''%'+@delStr+'%'' or  cast(['+@columnName+'] as varchar(1000)) like ''%'+@delStr+'%''' 
        --select @sql  
        exec sp_executesql @sql --查询出里面含有这个数据的表明  
        set @iRow=@@rowcount--  
        set @iResult=@iResult+@iRow  
        if @iRow>0  
             begin--输出相关的数据  
            print 'Table: '+@tableName+', Column:'+@columnName+' has   
          '+convert(varchar(10),@iRow)+' record(s);'  
             end  
         fetch next from cur1 into @columnName--把下一个@columnName 放到游标中  
     
     
     end  
     close cur1--关闭游标  
     deallocate cur1--关闭游标  
     
     fetch next from cur into @tableName,@tbID--把下一个@tableName,@tbID放到游标中  
    end    
    --print 'The database has '+convert(varchar(10),@iResult)+' record(s) .'  
    close cur  
    deallocate cur  
    set nocount off  
    select * from #myTable   group by tablename,tableNumname
    order by tablename
    drop table #myTable 

  • 相关阅读:
    vue2.0 练习项目-外卖APP(2)
    vue2.0 练习项目-外卖APP(1)
    迈向全栈开发学习(3)
    迈向全栈开发学习(2)
    迈向全栈开发学习(1)
    前端到后台ThinkPHP开发整站(完)
    前端到后台ThinkPHP开发整站(7)
    前端到后台ThinkPHP开发整站(6)
    前端到后台ThinkPHP开发整站(5)
    uniapp 设置全局scss生效
  • 原文地址:https://www.cnblogs.com/dingdingmao/p/3146561.html
Copyright © 2020-2023  润新知