Как я могу получить имена столбцов из таблицы в SQL Server? - PullRequest
603 голосов
/ 28 июня 2009

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

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

Ответы [ 17 ]

736 голосов
/ 28 июня 2009

Вы можете получить эту информацию и многое, многое другое, запросив представления информационной схемы .

Этот пример запроса:

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

Может быть сделано над всеми этими объектами БД:

183 голосов
/ 28 июня 2009

Вы можете использовать хранимую процедуру 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

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

139 голосов
/ 23 февраля 2012
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

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

52 голосов
/ 17 марта 2012

Вы можете использовать sp_help в SQL Server 2008.

sp_help <table_name>;

Сочетание клавиш для вышеуказанной команды: выберите имя таблицы (т.е. выделите его) и нажмите ALT + F1 .

43 голосов
/ 30 июня 2009

С помощью этого запроса вы получите ответ:

select Column_name 
from Information_schema.columns 
where Table_name like 'table name'
33 голосов
/ 16 декабря 2015

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

SHOW COLUMNS FROM database_Name.table_name;
25 голосов
/ 09 июля 2011
--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
20 голосов
/ 16 апреля 2013
SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

TABLE_NAME ваш стол

16 голосов
/ 28 октября 2011
SELECT column_name, data_type, character_maximum_length, table_name,ordinal_position, is_nullable 
FROM information_schema.COLUMNS WHERE table_name LIKE 'YOUR_TABLE_NAME'
ORDER BY ordinal_position
12 голосов
/ 27 июня 2016

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

desc <TABLE NAME> ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...