是否有一种简洁的方法来检索使用T-SQL的表列名列表?

时间:2010-01-06 11:37:14

标签: sql-server tsql

当我在查看SQL Server数据库时,我经常想要使用sqlcmd以交互方式检索数据库表的简单列名列表(没有数据类型信息等,只有名称)。

我可以这样做:

EXEC sp_columns @table_name = 'tablename'

这给了我比我想要的更多的东西,并且在命令提示符中包含它几乎无法理解的程度,或者我可以这样做:

SELECT col.name 
FROM sysobjects obj 
INNER JOIN syscolumns col
ON obj.id = col.id where obj.name = 'tablename'

这给了我想要的东西,但有点冗长。

我希望能够做到这样的事情:

SELECT column_name
FROM (EXEC sp_columns @table_name = 'tablename')

但这不起作用(例如,参见this question)。

是否有更简洁的方法(即更容易在命令行输入,因此更不容易出错)?

2 个答案:

答案 0 :(得分:9)

查看ANSI定义的INFORMATION_SCHEMA视图。首先尝试SELECT * FROM INFORMATION_SCHEMA.COLUMNS,然后从那里继续。

您的示例需要此SQL:

SELECT column_name
FROM information_schema.columns
WHERE table_name = 'tablename'

答案 1 :(得分:4)

SELECT [name] FROM sys.columns WHERE [object_id] = OBJECT_ID('MyTable')

Catalog views

  

我们建议您使用目录   观点,因为他们是最多的   目录的通用接口   元数据并提供最多   有效的获取,转换方式,   并提出这种定制形式   信息。所有用户都可用   目录元数据通过公开   目录视图。

纯粹个人,但我不喜欢INFORMATION_SCHEMA观点