解决方案 »

  1.   

    用这个代码试试:
    if OBJECT_ID('temp_search_table') is not null
       drop table temp_search_table
    gocreate table temp_search_table 
    (
    table_name nvarchar(100),
    column_name nvarchar(100),
    column_search_value nvarchar(max)
    )
    go
    declare @sql nvarchar(max);
    declare @search_str nvarchar(100);set @sql = ''
    set @search_str = '%163.com%';select @sql = @sql + 'insert into temp_search_table '+
                         'select '''+t.name +''' as table_name,''' + 
                         c.name+ ''' as column_name, ['+
                         c.name + '] from ['+t.name + 
                         '] where ['+c.name +'] like '''+@search_str+''';'
           
    from sys.tables t
    inner join sys.columns c
            on t.object_id = c.object_id 
    inner join sys.types tp
            on c.system_type_id = tp.system_type_id
               and c.user_type_id = tp.user_type_id
               and tp.name in ('char','varchar','nchar','nvarchar')
    where t.name <> 'temp_search_table'
    --select @sqlexec(@sql)
    --最后查找,你找到的内容
    select *
    from temp_search_table
      

  2.   

    修改了一下:
    if OBJECT_ID('temp_search_table') is not null
       drop table temp_search_table
    gocreate table temp_search_table 
    (
    table_name nvarchar(100),
    column_name nvarchar(100),
    column_search_value nvarchar(max)
    )
    go
    declare @sql nvarchar(max);
    declare @search_str nvarchar(100);set @sql = ''
    set @search_str = '%163.com%';   --这里是你要查找的某个关键字,修改为你想要找的关键字select @sql = @sql + 'insert into temp_search_table '+
                         'select '''+t.name +''' as table_name,''' + 
                         c.name+ ''' as column_name, ['+
                         c.name + '] from ['+t.name + 
                         '] where ['+c.name +'] like '''+@search_str+''';'
           
    from sys.tables t
    inner join sys.columns c
            on t.object_id = c.object_id 
    inner join sys.types tp
            on c.system_type_id = tp.system_type_id
               and c.user_type_id = tp.user_type_id
               and tp.name in ('char','varchar','nchar','nvarchar')
    where t.name <> 'temp_search_table'
    --select @sqlexec(@sql)
    --最后查找,你找到的内容
    select *
    from temp_search_table
      

  3.   

    参考 http://wenku.baidu.com/link?url=5q5BgCmpR5yAS_vpxMN-Cjk2Plye--kj6ciZ9Mvhix84DiLgn4A5uhq4qfUIKVunMHIQYnAo-0n-4BuqhkugalLvFC8bmwp7whp8iCu_uc3
    http://www.cnblogs.com/chegan/archive/2005/08/02/205756.html
      

  4.   

    --2008查找某数据库中的列是否存在某个值
    create proc spFind_Column_In_DB
    (
    @type int,--类型:1为文字类型、2为数值类型
    @str nvarchar(100)--需要搜索的名字
    )
    as
    --创建临时表存放结果
    create table #tbl(PK int identity primary key ,tbl sysname,col sysname)
    declare @tbl nvarchar(300),@col sysname,@sql nvarchar(1000)
    if @type=1 
    begin
    declare curTable cursor fast_forward
    for 
    select '['+SCHEMA_NAME(SCHEMA_ID)+'].['+o.name+']' tableName,'['+c.name+']' columnName from sys.columns c inner join sys.objects o on c.object_id=o.object_id
    where o.type_desc='user_table' and user_type_id in (167,175,231,239,35,99)
      end
    else
    begin 
    declare curTable cursor fast_forward
    for 
    select '['+SCHEMA_NAME(SCHEMA_ID)+'].['+o.name+']' tableName,'['+c.name+']' columnName from sys.columns c inner join sys.objects o on c.object_id=o.object_id
    where o.type_desc='user_table' and user_type_id in (56,48,52,59,60,62,106,108,122)
    end
    open curtable
    fetch next from curtable into @tbl,@col
    while @@FETCH_STATUS=0
    begin
    set @sql='if exists (select * from '+@tbl+' where '
    if @type=1
    begin
    set @sql += @col + ' like ''%'+@str +'%'')'
    end
    else 
    begin
    set @sql +=@col + ' in ('+@str+'))'
    end set @sql += ' INSERT #TBL(tbl,col) VALUES('''+@tbl+''','''+@col+''')'
    --print @sql
    exec (@sql)
    fetch next from curtable into @tbl,@col
    end
    close curtable 
    deallocate curtable
    select * from #tbl--使用例子,查询库中存在aaa这个值的列:
    exec  spFind_Column_In_DB  1,'aaa'