如何在SQL Server数据库中查找特定列?

14

在SQL Server 2016中,有没有任何方法或工具可以根据名称在整个数据库中查找列?

例如:查找ProductNumber,并显示包含它的所有表。


4
查询信息模式下所有列,其中列名为 'ProductNumber'。 - Pரதீப்
5个回答

19

您可以查询数据库的information_schema.columns表,该表包含定义在数据库中的所有列的架构结构。

使用以下查询:

select * from information_schema.columns where column_name = 'ProductNumber'

该结果将为您提供以下列:

TABLE_NAMETABLE_CATALOGDATA_TYPE和其他该数据库列的属性。


严谨地说,information_schema.columns 是一个视图而不是一个表。尽管在查询中并不重要,但对于其他人在 SSMS 中查找时需要知道他们需要查看“视图”而不是“表”。 - Caltor

4

你有几个选项可供选择:

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';

3
您可以按照以下方式使用查询:

select * 
from information_schema.columns 
where column_name = 'ProductNumber'

1
如果您需要按名称查找数据库对象(例如表、列、触发器),请查看名为SQL Search的免费Red-Gate工具 - 它会搜索整个数据库以查找任何类型的字符串。保留html标签。

enter image description here

enter image description here

这是任何DBA或数据库开发人员必备的绝佳工具 - 我是否已经提到它完全免费用于任何类型的使用?请注意,保留HTML标签。

1
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'

--and
sc.name like '%ProductN%'
order by so.name asc  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接