我想显示所有指定列名的表

时间:2010-11-16 18:32:18

标签: sql sql-server-2008

如何获取具有特定列名的所有表的列表?

8 个答案:

答案 0 :(得分:86)

在每个数据库级别上非常简单

Use DatabaseName
Select * From INFORMATION_SCHEMA.COLUMNS Where column_name = 'ColName'

答案 1 :(得分:16)

select table_name
from information_schema.columns
where COLUMN_NAME = 'MyColumn'

答案 2 :(得分:9)

您可以使用信息架构视图:

SELECT DISTINCT TABLE_SCHEMA, TABLE_NAME
FROM Information_Schema.Columns
WHERE COLUMN_NAME = 'ID'

以下是“列”视图的MSDN参考: http://msdn.microsoft.com/en-us/library/ms188348.aspx

答案 3 :(得分:7)

如果您正在尝试查询Oracle数据库,则可能需要使用

select owner, table_name 
from all_tab_columns
where column_name = 'ColName';

答案 4 :(得分:6)

SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name,*
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID 
WHERE c.name LIKE '%YOUR_COLUMN%' 
ORDER BY schema_name, table_name;

In depth article by SQL Authority

答案 5 :(得分:4)

SELECT      T.TABLE_NAME, C.COLUMN_NAME
FROM        INFORMATION_SCHEMA.COLUMNS C
            INNER JOIN INFORMATION_SCHEMA.TABLES T ON T.TABLE_NAME = C.TABLE_NAME
WHERE       TABLE_TYPE = 'BASE TABLE'
            AND COLUMN_NAME = 'ColName'

这只返回表,并忽略任何感兴趣的人的视图!

答案 6 :(得分:2)

- 获取包含所选columnName

的表
SELECT  c.name AS ColName, t.name AS TableName
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%batchno%'

它的工作......

答案 7 :(得分:1)

您可以在信息架构中找到您要查找的内容: SQL Server 2005 System Tables and Views 我认为您需要SQL Server 2005或更高版本才能使用本文中介绍的方法,但类似的方法可用于早期版本