Je voudrais interroger le nom de toutes les colonnes d'une table. J'ai trouvé comment faire cela dans:
Mais j'ai besoin de savoir: comment faire cela dans Microsoft SQL Server (2008 dans mon cas)?
SELECT TOP 0 * FROM my_tablec'est moins de frappes
Je voudrais interroger le nom de toutes les colonnes d'une table. J'ai trouvé comment faire cela dans:
Mais j'ai besoin de savoir: comment faire cela dans Microsoft SQL Server (2008 dans mon cas)?
SELECT TOP 0 * FROM my_tablec'est moins de frappes
Réponses:
Vous pouvez obtenir ces informations et bien plus encore en interrogeant les vues Schéma d'informations .
Cet exemple de requête:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'
Peut être créé sur tous ces objets DB:
Nortwind....)
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'tableName';cela fonctionne pour moi
TABLE_SCHEMA = '?' AND TABLE_NAME = '?'car je suis sur localhost et j'ai plusieurs tables avec le même nom mais dans différentes bases de données.
Vous pouvez utiliser la procédure stockée sp_columns qui retournerait 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 obtient toutes les colonnes de toutes les tables, triées par nom de table, puis par nom de colonne.
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'
C'est mieux que de partir sys.columnscar cela se voit DATA_TYPEdirectement.
AND TABLE_SCHEMA = 'schemaName'la WHEREclause.
JOIN sys.types t on c.system_type_id = t.system_type_idet ajouter t.namevotre instruction 'SELECT' pour obtenir également les types à côté du nom de chaque colonne.
Vous pouvez utiliser sp_helpdans SQL Server 2008.
sp_help <table_name>;
Raccourci clavier pour la commande ci-dessus: sélectionnez le nom de la table (c.-à-d. Mettez-le en surbrillance) et appuyez sur ALT+ F1.
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;
--This is another variation used to document a large database for 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
--In the left join, c.type is replaced by c.xtype to get varchar types
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
Cette question SO manque l'approche suivante:
-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
Il vérifiera si le donné tableest la 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 essayer ceci, ce qui donne tous les noms de colonnes avec leurs types de données respectifs.
desc <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
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 éditer le SELECT STATEMENT TO SELECT *.
Résumer les réponses
Je peux voir de nombreuses réponses et façons différentes de le faire, mais il y a le hic là-dedans et c'est le objective.
Oui, l'objectif. Si vous voulez only knowles noms de colonnes que vous pouvez utiliser
SELECT * FROM my_table WHERE 1=0
or
SELECT TOP 0 * FROM my_table
Mais si vous voulez voir useces colonnes quelque part ou simplement les dire manipulate, les requêtes rapides ci-dessus ne seront d'aucune utilité. Vous devez utiliser
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'
une autre façon de connaître certaines colonnes spécifiques où nous avons besoin de certaines colonnes similaires
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'
SELECT * FROM my_table WHERE 1=0