在SQL Server中为select语句使用表元数据?

时间:2008-08-26 13:20:57

标签: sql sql-server

我有一个大型数据库,想要选择具有特定列名的表名。我在MySQL中做过类似的事情,但在SQL Server上找不到任何信息。

我想做类似的事情:

select [table] 
from [db] 
where table [has column 'classtypeid']

我该怎么办?

2 个答案:

答案 0 :(得分:5)

使用ANSI information_schema视图,这也适用于MySQL

select table_name 
from information_schema.columns 
where column_name = 'classtypeid'

答案 1 :(得分:2)

你走了:

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

编辑:请注意,这不会根据包含该列的任何表列出视图。如果您只查询INFORMATION_SCHEMA.COLUMNS,您还将获得视图。