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

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

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

441
28 июня '09 в 17:05
источник поделиться
16 ответов

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

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

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

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

  • CHECK_CONSTRAINTS
  • COLUMN_DOMAIN_USAGE
  • COLUMN_PRIVILEGES
  • COLUMNS
  • CONSTRAINT_COLUMN_USAGE
  • CONSTRAINT_TABLE_USAGE
  • DOMAIN_CONSTRAINTS
  • DOMAINS
  • KEY_COLUMN_USAGE
  • ПАРАМЕТРЫ
  • REFERENTIAL_CONSTRAINTS
  • ROUTINES
  • ROUTINE_COLUMNS
  • SCHEMATA
  • TABLE_CONSTRAINTS
  • TABLE_PRIVILEGES
  • ТАБЛИЦЫ
  • VIEW_COLUMN_USAGE
  • VIEW_TABLE_USAGE
  • ПРОСМОТРЫ
546
28 июня '09 в 17:08
источник

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

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

143
28 июня '09 в 17:19
источник
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

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

89
23 февр. '12 в 21:08
источник

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

sp_help <table_name>;

Кратковременное сокращение клавиатуры для указанной выше команды select table name (выделите ее) и нажмите ALT + F1.

41
17 марта '12 в 17:17
источник

Используя этот запрос, вы получите ответ:

select Column_name 
from Information_schema.columns 
where Table_name like 'table name'
34
30 июня '09 в 7:50
источник

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

21
09 июля '11 в 0:18
источник

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

SHOW COLUMNS FROM database_Name.table_name;
16
16 дек. '15 в 10:15
источник
SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

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

14
16 апр. '13 в 16:24
источник
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
14
28 окт. '11 в 8:37
источник

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

-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
9
27 июня '13 в 22:13
источник

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

EXEC sp_columns 'Имя вашей таблицы'

8
23 марта '17 в 8:41
источник

Он проверит, соответствует ли 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'
8
08 апр. '13 в 17:28
источник

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

desc <TABLE NAME> ;
7
27 июня '16 в 15:31
источник

вы можете использовать этот запрос

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
2
30 июня '16 в 10:43
источник
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
2
09 марта '17 в 20:32
источник
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'
0
04 дек. '15 в 19:04
источник

Посмотрите другие вопросы по меткам или Задайте вопрос