代码之家  ›  专栏  ›  技术社区  ›  Sathish Guru V

查找表中存在的命名列

sql
  •  2
  • Sathish Guru V  · 技术社区  · 14 年前

    有人能帮我吗?

    6 回复  |  直到 14 年前
        1
  •  4
  •   Oded    14 年前

    你可以用 INFORMATION_SCHEMA.COLUMNS

    SELECT DISTINCT TABLE_NAME, COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME = 'Name of column';
    
        2
  •  5
  •   Daniel Renshaw    14 年前

    这将在当前/活动数据库中找到您要查找的列。如果你在另一个数据库中,只需添加前缀 INFORMATION_SCHEMA.COLUMNS dbname.INFORMATION_SCHEMA.COLUMNS )

    DECLARE @Schema varchar(max)
    DECLARE @Column varchar(max)
    
    SET @Schema = NULL
    SET @Column = 'primary_id'
    
    SELECT DISTINCT
        TABLE_NAME, *
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME = @Column
        AND
        (
            @Schema IS NULL
                OR TABLE_SCHEMA = @Schema
        )
    

    http://dev.mysql.com/doc/refman/5.0/en/columns-table.html )

        3
  •  2
  •   Jon Freedman    14 年前

    此查询将为您提供所有具有名为foo的列的表

    SELECT TABLE_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME = 'foo'
    
        4
  •  2
  •   JulesLt    14 年前

    请注意,虽然对SQL*Server(以及mySQL和postGres)是正确的,但对Oracle的答案是不同的,因为他们不支持信息模式(即ANSI SQL-92,所以他们有足够的时间来支持)。

    在甲骨文上你会用

    SELECT table_name, column_name
    FROM ALL_TAB_COLUMNS
    WHERE column_name = :column_name
    

    或者您可以创建一个模式和视图来处理丢失的信息_架构.列.

        5
  •  1
  •   Rahul    14 年前

    select TABLE_NAME from Your_Database_Name.INFORMATION_SCHEMA.COLUMNS where COLUMN_NAME like '%ColumnName%' group by TABLE_NAME

        6
  •  1
  •   Burcin    14 年前

    在sybase中;

    declare @column varchar(30)
    select @column = 'column_name'
    select object_name(id), @column from DB_NAME..syscolumns where name = @column