我想查询一个表的所有列的名称。我发现如何做到这一点:
甲骨文 MySQL PostgreSQL
但我也需要知道:如何在Microsoft SQL Server(在我的情况下是2008年)中做到这一点?
我想查询一个表的所有列的名称。我发现如何做到这一点:
甲骨文 MySQL PostgreSQL
但我也需要知道:如何在Microsoft SQL Server(在我的情况下是2008年)中做到这一点?
当前回答
总结答案
我可以看到很多不同的答案和方法来做到这一点,但这是有摩擦的,这是目标。
是的,目标。如果您只想知道列名,您可以使用
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]'
其他回答
您可以使用这个查询
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
--This is another variation used to document a large database for conversion (Edited to --remove static columns)
SELECT o.Name as Table_Name
, c.Name as Field_Name
, t.Name as Data_Type
, t.length as Length_Size
, t.prec as Precision_
FROM syscolumns c
INNER JOIN sysobjects o ON o.id = c.id
LEFT JOIN systypes t on t.xtype = c.xtype
WHERE o.type = 'U'
ORDER BY o.Name, c.Name
--In the left join, c.type is replaced by c.xtype to get varchar types
在SQL Server中,可以从INFORMATION_SCHEMA.COLUMNS中选择COLUMN_NAME。
代码如下:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='YourTableName'
简单,不需要sys变量:
SHOW COLUMNS FROM suppliers;
这个SO问题缺少以下方法:
-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')