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

时间:2020-03-05 18:43:18  来源:igfitidea点击:

我有一个大型数据库,想选择具有特定列名的表名。我已经在MySQL中完成了类似的操作,但是在SQL Server上找不到任何信息。

我想做类似的事情:

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

我该怎么做?

解决方案

回答

使用ANSI information_schema视图,这在MySQL中也可以使用

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

回答

干得好:

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,我们还将获得后视图。