如何从 SQL Server 2000-2008 中位于一组名称的多个表中选择列名称

Ret*_*der 2 sql-server sql-server-2005 sql-server-2000 sql-server-2008

如果我有一组这样的名字:

('first', 'fname', 'firstname', 'namef', 'namefirst', 'name')
Run Code Online (Sandbox Code Playgroud)

SQL Server 2000 - 2008 中检索包含上述特定数据库的列名的不同表名的最佳方法是什么?

我想从显示的表列表中排除系统表和临时表。

SELECT so.name
FROM   sysobjects so
       INNER JOIN syscolumns sc
            ON  so.id = sc.id
WHERE  sc.name IN ('first', 'fname', 'firstname', 'namef', 'namefirst', 'name')
Run Code Online (Sandbox Code Playgroud)

我相信这是这个问题的衍生。

谢谢

cjk*_*cjk 5

您可以使用该INFORMATION_SCHEMA架构。

SELECT DISTINCT t.TABLE_NAME
  FROM INFORMATION_SCHEMA.TABLES t
  JOIN INFORMATION_SCHEMA.COLUMNS c
  ON t.TABLE_NAME = c.TABLE_NAME
  WHERE c.COLUMN_NAME IN (your list of names)
Run Code Online (Sandbox Code Playgroud)

我不记得这是否包括临时表,但您可以查看其他列TABLES以了解要过滤的内容。