SQL Server 2008:查找包含具有指定名称的列的所有表

时间:2013-11-27 07:50:31

标签: sql sql-server-2008

我知道可以选择包含特定列名的表,其中包含以下查询:

SELECT t.name,
       c.name 
FROM sys.tables t 
INNER JOIN sys.columns c 
   ON c.object_id=t.object_id 
WHERE c.name like '%colname%'

有没有办法找到包含2个或更多给定列的表?

举个例子,我想找的是所有具有特定列的表:学生和老师。

2 个答案:

答案 0 :(得分:6)

按唯一内容进行分组,并计算having子句

中的组内容
select t.name
from sys.tables t 
inner join sys.columns c on c.object_id=t.object_id 
where c.name in ('student','teacher')
group by t.name
having count(distinct c.name) = 2

答案 1 :(得分:4)

例如,我有一个名为组织的数据库。我有多个表格,其中包含 tax_id 列。

大多数情况下,我们必须从整个数据库中找到这样一个列。 解决方案如下:

select table_name,column_name from information_schema.columns
where column_name like '%tax%'

在查询数据库名称时,您只需要更改愿意列名,并找到所需的结果

搜索任何值与整个数据库中的计算机一样,在哪个列和哪些表中计算计算机是否存在

首先我们需要编写一个存储过程,然后我们将它重用于我们的搜索,我从http://vyaskn.tripod.com/search_all_columns_in_all_tables.htm得到它非常完美的结果。 执行商店程序后,我们得到了所需的结果,如下图所示。 图像显示整个数据库中关键字计算机的完整搜索结果。 Image showing complete search result of keyword computer from whole database