Comment puis-je obtenir des noms de colonne à partir d'une table dans SQL Server?

je voudrais interroger le nom de toutes les colonnes d'une table. J'ai trouvé comment faire dans:

  • Oracle
  • MySQL
  • PostgreSQL

Mais j'ai besoin de savoir: comment cela peut-il être fait dans Microsoft SQL Server (2008, dans mon cas)?

526
demandé sur Community 2009-06-28 18:05:50

17 réponses

659
répondu Bakudan 2017-12-04 11:53:27

vous pouvez utiliser la procédure stockée sp_columns qui retournerait des informations relatives à toutes les colonnes pour une table donnée. Plus d'informations peuvent être trouvées ici http://msdn.microsoft.com/en-us/library/ms176077.aspx

vous pouvez également le faire par une requête SQL. Quelque chose comme ça devrait aider -

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

ou une variante serait:

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

cela obtient toutes les colonnes de toutes les tables, ordonnées par nom de la table et ensuite sur le nom de la colonne.

165
répondu Arnkrishn 2015-01-05 12:48:06
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

C'est mieux que d'obtenir de sys.columns parce qu'il montre DATA_TYPE directement.

119
répondu Limin 2016-06-17 15:51:54

vous pouvez utiliser sp_help dans SQL Server 2008.

sp_help <table_name>;

raccourci clavier pour la commande ci-dessus: sélectionner le nom de la table (I. e surlignez-le) et appuyez sur ALT + F1 .

48
répondu mr_eclair 2018-08-06 15:12:35

En utilisant cette requête, vous obtenez la réponse:

select Column_name 
from Information_schema.columns 
where Table_name like 'table name'
40
répondu KuldipMCA 2014-03-26 14:21:04

vous pouvez écrire cette requête pour obtenir le nom de la colonne et tous les détails sans utiliser INFORMATION_SCHEMA in MySql:

SHOW COLUMNS FROM database_Name.table_name;
26
répondu Sachin Parse 2016-09-19 12:37:25

--il s'agit d'une autre variation utilisée pour documenter une grande base de données pour la conversion (révisé pour --supprimer les colonnes statiques)

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

--Dans la jointure gauche, c.le type est remplacé par c.xtype pour obtenir varchar types

24
répondu Doc 2012-04-26 08:07:50
SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

// TABLE_NAME est votre table

18
répondu bstricks 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
répondu Petko Petkov 2012-02-23 18:14:14

vous pouvez essayer ceci.Cela donne tous les noms de colonnes avec leurs types de données.

desc <TABLE NAME> ;
13
répondu ishaan arora 2016-06-27 12:31:04

Cela DONC, la question est manquant, l'approche suivante :

-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
11
répondu NeverHopeless 2013-06-27 19:13:53

il suffit d'exécuter cette commande

EXEC sp_columns 'de Votre Nom de la Table'

10
répondu Hardeep Singh 2017-03-23 05:41:03

il vérifiera si le table donné est table de Base .

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
répondu Luv 2013-04-08 14:28:01

vous pouvez utiliser cette requête

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
4
répondu reza akhlaghi 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
répondu Mohamed Raguig Labzour 2017-03-09 21:34:33
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'
2
répondu onavascuez 2015-12-04 16:04:09

une autre option qui est sans doute plus intuitive est:

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

cela vous donne tous les noms de vos colonnes dans une seule colonne. Si vous vous souciez d'autres métadonnées, vous pouvez modifier la déclaration SELECT en SELECT * .

1
répondu Nde Samuel Mbah 2018-09-24 17:12:09