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

甲骨文 MySQL PostgreSQL

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


当前回答

通过使用这个查询,您可以得到答案:

select Column_name 
from Information_schema.columns 
where Table_name like 'table name'

其他回答

您可以通过查询information Schema视图获得这些信息以及更多信息。

这个示例查询:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'

可以在所有这些DB对象上创建:

CHECK_CONSTRAINTS COLUMN_DOMAIN_USAGE COLUMN_PRIVILEGES 列 CONSTRAINT_COLUMN_USAGE CONSTRAINT_TABLE_USAGE DOMAIN_CONSTRAINTS 域 KEY_COLUMN_USAGE 参数 REFERENTIAL_CONSTRAINTS 例程 ROUTINE_COLUMNS 图式 TABLE_CONSTRAINTS TABLE_PRIVILEGES 表 VIEW_COLUMN_USAGE VIEW_TABLE_USAGE 的观点

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

总结答案

我可以看到很多不同的答案和方法来做到这一点,但这是有摩擦的,这是目标。

是的,目标。如果您只想知道列名,您可以使用

SELECT * FROM my_table WHERE 1=0
or
SELECT TOP 0 * FROM my_table

但是如果你想在某个地方使用这些列,或者简单地说操纵它们,那么上面的快速查询就没有任何用处了。你需要使用

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'

还有一种方法可以知道一些特定的列,当我们需要一些类似的列时

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'

在SQL Server 2008中可以使用sp_help。

sp_help <table_name>;

以上命令的键盘快捷键:选择表名(即突出显示它)并按ALT+F1。

您可以编写此查询来获得列名和所有详细信息,而无需使用 MySql中的INFORMATION_SCHEMA:

SHOW COLUMNS FROM database_Name.table_name;