在SQL Server 2016中,有没有任何方法或工具可以根据名称在整个数据库中查找列?
例如:查找ProductNumber
,并显示包含它的所有表。
在SQL Server 2016中,有没有任何方法或工具可以根据名称在整个数据库中查找列?
例如:查找ProductNumber
,并显示包含它的所有表。
您可以查询数据库的information_schema.columns
表,该表包含定义在数据库中的所有列的架构结构。
使用以下查询:
select * from information_schema.columns where column_name = 'ProductNumber'
该结果将为您提供以下列:
TABLE_NAME
,TABLE_CATALOG
,DATA_TYPE
和其他该数据库列的属性。
information_schema.columns
是一个视图而不是一个表。尽管在查询中并不重要,但对于其他人在 SSMS 中查找时需要知道他们需要查看“视图”而不是“表”。 - Caltor你有几个选项可供选择:
SELECT *
FROM information_schema.columns
WHERE column_name = 'YourColumnName';
-- OR
SELECT col.name, tab.name
FROM sys.columns col
INNER JOIN sys.tables tab
ON tab.object_id = col.object_id
WHERE col.name = 'YourColumnName';
select *
from information_schema.columns
where column_name = 'ProductNumber'
SELECT
so.name "table name",
sc.name "column name"
FROM sysobjects so
INNER JOIN syscolumns sc
ON so.id = sc.id
WHERE --so.type='U'
sc.name like '%ProductN%'
order by so.name asc