Jak uzyskać nazwy kolumn z tabeli w SQL Server?

Chciałbym zapytać o nazwę wszystkich kolumn tabeli. Znalazłem jak to zrobić w:

Ale muszę wiedzieć: Jak można to zrobić w Microsoft SQL Server (w moim przypadku 2008)?

Author: Community, 2009-06-28

17 answers

Możesz uzyskać te informacje i wiele, wiele więcej, pytając o widoki schematu informacyjnego .

To przykładowe zapytanie:

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

Mogą być wykonane przez wszystkie te obiekty DB:

 659
Author: Bakudan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-04 11:53:27

Możesz użyć procedury składowanej sp_columns, która zwróci informacje dotyczące wszystkich kolumn dla danej tabeli. Więcej informacji można znaleźć tutaj http://msdn.microsoft.com/en-us/library/ms176077.aspx

Można to również zrobić za pomocą zapytania SQL. Coś takiego powinno pomóc -

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

Lub odmianą byłoby:

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

Pobiera wszystkie kolumny ze wszystkich tabel, uporządkowane według nazwy tabeli, a następnie według nazwy kolumny.

 165
Author: Arnkrishn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-05 12:48:06
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

Jest to lepsze niż otrzymywanie z sys.columns, ponieważ pokazuje DATA_TYPE bezpośrednio.

 119
Author: Limin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-17 15:51:54

Możesz użyć sp_help w SQL Server 2008.

sp_help <table_name>;

Skróty klawiaturowe dla powyższego polecenia: wybierz nazwę tabeli (tzn. zaznacz ją) i naciśnij ALT+F1 .

 48
Author: mr_eclair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 15:12:35

Używając tego zapytania otrzymujesz odpowiedź:

select Column_name 
from Information_schema.columns 
where Table_name like 'table name'
 40
Author: KuldipMCA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-26 14:21:04

Możesz napisać to zapytanie, aby uzyskać nazwę kolumny i wszystkie szczegóły bez użycia INFORMATION_SCHEMA w MySql:

SHOW COLUMNS FROM database_Name.table_name;
 26
Author: Sachin Parse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-19 12:37:25

--jest to kolejna odmiana używana do dokumentowania dużej bazy danych do konwersji (edytowana do --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

--w lewym połączeniu, c. type jest zastępowane przez c. xtype, aby uzyskać typy varchar

 24
Author: Doc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-26 08:07:50
SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

// TABLE_NAME is your table

 18
Author: bstricks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-25 08:19:16
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
 15
Author: Petko Petkov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-23 18:14:14

Możesz spróbować tego.To daje wszystkie nazwy kolumn wraz z ich odpowiednimi typami danych.

desc <TABLE NAME> ;
 13
Author: ishaan arora,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-27 12:31:04

W tym pytaniu brakuje następującego podejścia:

-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
 11
Author: NeverHopeless,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-27 19:13:53

Po prostu uruchom to polecenie

EXEC sp_columns 'Nazwa Twojej Tabeli'

 10
Author: Hardeep Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-23 05:41:03

Sprawdzi czy dany table jest tabela bazowa.

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'
 9
Author: Luv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-08 14:28:01

Możesz użyć tego zapytania

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
 4
Author: reza akhlaghi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-30 07:43:33
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
 4
Author: Mohamed Raguig Labzour,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-09 21:34:33
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'
 2
Author: onavascuez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-04 16:04:09

Inną opcją, która jest prawdopodobnie bardziej intuicyjna, jest:

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

To daje Ci wszystkie nazwy kolumn w jednej kolumnie. Jeśli zależy ci na innych metadanych, możesz zmienić polecenie Edytuj SELECT na SELECT *.

 1
Author: Nde Samuel Mbah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-24 17:12:09