0

是否可以在查询中仅显示某些表名:

USE [WebContact] 

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

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

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

USE [WebContact] 

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

它告诉我

列名“ContactDateTime”无效

即使这是行名之一。

这可能吗?

4

3 回答 3

2

如果 ContactDateTime 是您在表 memberEmails 中查找的列,那么您可以执行此操作

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'memberEmails'
and COLUMN_NAME='ContactDateTime'
于 2016-04-22T15:58:41.583 回答
2

该列ContactDateTime可能是表中的列,但不是INFORMATION_SCHEMA.COLUMNS视图中的列。

因为它不是一个列,SQL Server 会出错,说它是无效的。

我认为您要做的是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!

Also see here for the case against using INFORMATION_SCHEMAS.

于 2016-04-22T15:59:41.527 回答
0

The view INFORMATION_SCHEMA.COLUMNS don't have column name ContactDateTime. Please read document first

于 2016-04-22T16:00:28.067 回答