一个数据库data_01,里面有很多很多表table_01````,差不多100多张;每张表里有20多个字段;问题是这样的:  现在我知道字段名称;如何根据字段名查询出我字段所在的表名???????????

解决方案 »

  1.   

    declare @colname sysname
    set @colname = '列名'select DISTINCT a.name from  sysobjects as a 
    inner join syscolumns as b on a.id = b.id
    where a.xtype = 'U' and a.status > 0 and b.name = @colname
      

  2.   

    ----创建测试数据
    if object_id('tbTest1') is not null
    drop table tbTest1
    if object_id('tbTest2') is not null
    drop table tbTest2
    if object_id('tbTest3') is not null
    drop table tbTest3
    GO
    create table tbTest1(姓名 varchar(10),年龄 int)
    create table tbTest2(姓名 varchar(10),出生日期 datetime)
    create table tbTest3(产品名称 varchar(10),数量 int)
    GO
    ----查询
    declare @colname sysname
    set @colname = '姓名'select DISTINCT a.name from  sysobjects as a 
    inner join syscolumns as b on a.id = b.id
    where a.xtype = 'U' and a.status > 0 and b.name = @colname----清除测试环境
    drop table tbTest1,tbTest2,tbTest3/*结果
    name
    ---------------
    tbTest1
    tbTest2
    */
      

  3.   

    select t.*,v.name from syscolumns t,sysobjects v
    where t.id=v.id
    and t.name='did'
    如果多个表存在该字段,则会显示多个
      

  4.   

    呵呵
    也不说什么思路
    就是你要熟悉以下这几个常用的系统表
    sysobjects     --所有的表名
    syscolumns   --所有的表里的列名 
    systypes    --所有的类型
    ----lz:可以自行打开这几个表看看它们有什么关系、关联等等