我想查询一个表的所有列的名称。我发现如何做到这一点:

甲骨文 MySQL PostgreSQL

但我也需要知道:如何在Microsoft SQL Server(在我的情况下是2008年)中做到这一点?


当前回答

SELECT c.Name 
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.object_id = OBJECT_ID('TABLE_NAME')
ORDER BY c.Name

其他回答

只需运行这个命令

EXEC sp_columns 'Your Table Name'
SELECT c.Name 
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.object_id = OBJECT_ID('TABLE_NAME')
ORDER BY c.Name

这个SO问题缺少以下方法:

-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')

在SQL Server中,可以从INFORMATION_SCHEMA.COLUMNS中选择COLUMN_NAME。

代码如下:

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

另一个更直观的选择是:

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

这将在一个列中提供所有列名。 如果您关心其他元数据,可以将SELECT语句编辑为SELECT *。