Comment puis-je obtenir des noms de colonne à partir d'une table dans SQL Server?
17 réponses
vous pouvez obtenir cette information et beaucoup, beaucoup plus en questionnant le vues de schéma D'Information .
Cet exemple de requête:
SELECT *
FROM Northwind.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'
peut être réalisé sur tous ces objets DB:
- CHECK_CONSTRAINTS
- COLUMN_DOMAIN_USAGE
- COLUMN_PRIVILÈGES
- colonnes
- CONSEQUINT_COLUMN_USAGE
- CONSTRAINT_TABLE_USAGE
- DOMAIN_CONSTRAINTS
- DOMAINS
- KEY_COLUMN_USAGE
- paramètres
- REFERENTIAL_CONSTRAINTS
- ROUTINES
- ROUTINE_COLUMNS
- SCHEMATA
- TABLE_CONSTRAINTS
- TABLE_PRIVILÈGES
- TABLES
- VIEW_COLUMN_USAGE
- VIEW_TABLE_USAGE
- vues
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.
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.
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 .
En utilisant cette requête, vous obtenez la réponse:
select Column_name
from Information_schema.columns
where Table_name like 'table name'
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;
--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
SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')
// TABLE_NAME est votre table
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
vous pouvez essayer ceci.Cela donne tous les noms de colonnes avec leurs types de données.
desc <TABLE NAME> ;
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')
il suffit d'exécuter cette commande
EXEC sp_columns 'de Votre Nom de la Table'
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'
vous pouvez utiliser cette requête
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
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
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'
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 *
.