SQL 服务器:从查询中获取某些 table 名称

SQL Server : getting certain table names from query

是否可以在查询中只显示某些 table 个名字:

USE [WebContact] 

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'memberEmails'

大多数时候我需要所有 table 名称,但在某些情况下我只需要某些行名称。

当我尝试执行以下操作时:

USE [WebContact] 

SELECT COLUMN_NAME, ContactDateTime 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'memberEmails'

它告诉我

Invalid column name 'ContactDateTime'

即使那是行名称之一。

这可以吗?

如果 ContactDateTime 是您在 table memberEmails 中查找的列,那么您可以这样做

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'memberEmails'
and COLUMN_NAME='ContactDateTime'

ContactDateTime 可能是您 table 中的一列,但它不是 INFORMATION_SCHEMA.COLUMNS 视图中的一列。

因为它不是那里的一列,SQL 服务器会出错,说它无效。

我想你想做的是在你的声明中添加另一个 WHERE 子句:

USE [WebContact] 
SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'memberEmails'
AND [COLUMN_NAME] = 'ContactDateTime'; -- Here!

或者如果您想添加多列...

USE [WebContact] 
SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'memberEmails'
AND [COLUMN_NAME] 
  IN ('ContactDateTime', 'column2', 'column3', ... 'column(n)'); -- Here!

另请参阅此处了解反对使用 INFORMATION_SCHEMAS 的案例。

视图 INFORMATION_SCHEMA.COLUMNS 没有列名 ContactDateTime。请先read document