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

甲骨文 MySQL PostgreSQL

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


当前回答

它将检查给定的表是否是Base table。

SELECT 
    T.TABLE_NAME AS 'TABLE NAME',
    C.COLUMN_NAME AS 'COLUMN NAME'
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME=C.TABLE_NAME
    WHERE   T.TABLE_TYPE='BASE TABLE'
            AND T.TABLE_NAME LIKE 'Your Table Name'

其他回答

你可以试试这个。这将给出所有列名及其各自的数据类型。

desc <TABLE NAME> ;
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

这比从sys。列,因为它直接显示DATA_TYPE。

SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

TABLE_NAME是你的表

在SQL Server 2008中可以使用sp_help。

sp_help <table_name>;

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

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

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