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


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

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


511
2018-06-28 14:05


origine


Réponses:


Vous pouvez obtenir cette information et beaucoup, beaucoup plus en interrogeant le Vues du schéma d'informations.

Cet exemple de requête:

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

Peut être faite sur tous ces objets DB:


643
2018-06-28 14:08



Vous pouvez utiliser la procédure stockée sp_columns qui renvoie des informations relatives à toutes les colonnes d'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 variation 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 permet d'obtenir toutes les colonnes de toutes les tables, classées par nom de table puis par nom de colonne.


159
2018-06-28 14:19



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

C'est mieux que de passer de sys.columns parce que ça montre DATA_TYPE directement.


112
2018-02-23 18:08



Vous pouvez utiliser sp_help dans SQL Server 2008.

sp_help <table_name>;

Clavier raccourci pour la commande ci-dessus select table name (le surligner) et appuyez sur ALT+F1.


43
2018-03-17 14:17



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

select Column_name 
from Information_schema.columns 
where Table_name like 'table name'

39
2018-06-30 04:50



- Ceci est une autre variation utilisée pour documenter une grande base de données pour la 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

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


23
2017-07-08 21:18



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

SHOW COLUMNS FROM database_Name.table_name;

21
2017-12-16 07:15



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
2017-10-28 05:37



SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

// TABLE_NAME est votre table


14
2018-04-16 13:24



Vous pouvez essayer ceci. Cela donne tous les noms de colonne avec leurs types de données respectifs.

desc <TABLE NAME> ;

11
2018-06-27 12:31



Cette question SO manque de l'approche suivante:

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

10
2018-06-27 19:13