SQL Server:从查询中获取某些表名

时间:2016-04-22 15:51:24

标签: sql sql-server vb.net information-schema tablename

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

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”

即使这是行名称之一。

这可能吗?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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!

另请参阅此处了解使用INFORMATION_SCHEMAS的情况。

答案 2 :(得分:0)

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