таблице - получить список столбцов таблицы ms sql




Как получить имена столбцов из таблицы в SQL Server? (12)

Я хотел бы запросить имя всех столбцов таблицы. Я нашел, как это сделать:

Но мне нужно знать: как это можно сделать в Microsoft SQL Server (2008 в моем случае)?


- Это еще один вариант, используемый для документирования большой базы данных для преобразования (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

- В левом соединении c.type заменяется на c.xtype, чтобы получить типы varchar


В этом вопросе SO отсутствует следующий подход:

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

Вы можете использовать хранимую процедуру sp_columns, которая возвращает информацию, относящуюся ко всем столбцам для данной таблицы. Дополнительную информацию можно найти здесь http://msdn.microsoft.com/en-us/library/ms176077.aspx

Вы также можете сделать это с помощью SQL-запроса. Некоторые вещи, подобные этому, должны помочь -

SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName') 

Или вариант:

SELECT   o.Name, c.Name
FROM     sys.columns c 
         JOIN sys.objects o ON o.object_id = c.object_id 
WHERE    o.type = 'U' 
ORDER BY o.Name, c.Name

Это получает все столбцы из всех таблиц, упорядоченных по имени таблицы, а затем по имени столбца.


Вы можете написать этот запрос, чтобы получить имя столбца и все данные без использования INFORMATION_SCHEMA в MySql:

SHOW COLUMNS FROM database_Name.table_name;

Вы можете попробовать это. Это дает имена всех столбцов с соответствующими типами данных.

desc <TABLE NAME> ;

Еще один вариант, который, возможно, более интуитивно понятен:

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

Это дает вам все имена столбцов в одном столбце. Если вам нужны другие метаданные, вы можете изменить править SELECT STATEMENT TO SELECT * .


Он будет проверять, является ли данная 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'

Просто запустите эту команду

EXEC sp_columns 'Your Table Name'

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

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 name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

// TABLE_NAME - ваша таблица


select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

Это лучше, чем получение из sys.columns потому что оно показывает DATA_TYPE напрямую.







tsql