[SQL Server] nom des champs d'une table [Fermé]

Signaler
-
 mghuze -
bonjour,

je cherche à récupérer la liste des champs d'une table (leur nom uniquement) sur une base MS SQL Server... mais je n'y arrive pas.

Si je fais "sp_columns table" j'obtiens toutes les infos nécessaires mais je n'arrive pas à en extraire le nom des champs (identifiés par la colonne COLUMN_NAME).

j'ai essayé quelque chose dans le genre
select COLUMN_NAME from sp_columns table
mais ça ne marche pas.

A noter qu'il est important que je puisse le faire une UNE SEULE requête. Si vous avez une solution, je suis preneur.

Merci d'avance,

11 réponses

Pour ceux qui sont hors sujets... Arrêter de polluer les réponses et lisez ce que l'on demande exactement!

Sinon pour ce que tu as besoin:

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='NomDeLaTable'
54
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Il voulais une réponse vis-à-vis de SQL Server et non MySQL

C exactement ce que cherchais merci
merci bcp
Merci pour l'info, pile poil ce qu'il me faut !
Messages postés
32840
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 358
Tu peux taper directement dans les tables système.

Exemple:
select name from syscolumns
where id = (select top 1 id from sysobjects where xtype='U' and name='MATABLE'
order by offset desc
il manque une parenthese fermante a la requete, ce qui donne :
select name from syscolumns
where id = (select top 1 id from sysobjects where xtype='U' and name='MATABLE'
order by offset desc)
Merci sa aide pour le copier coller ! : )
* Cette requête permet d'avoir la liste des tables et des champs par table pour sql server
CREATE VIEW dbo.dvca_catalogue
AS
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS

Double horreur !
tu viens de crée une vue sur une vue systéme
Pour MySQL (avec phpMyAdmin) - J'ai cherché et ce post m'a beaucoup aidé.

il faut saisir

SELECT COLUMN_NAME AS name FROM information_schema.COLUMNS WHERE TABLE_NAME = 'MATABLE' AND TABLE_SCHEMA = 'MONSCHEMA'
Beaucoup plus simplement concernant MySQL:

http://dev.mysql.com/doc/refman/5.0/fr/show-columns.html

typiquement: SHOW COLUMNS FROM maTable;

Point barre et même virgulé ;)

Pour être exhaustif, voire généraliste (je sais pas si la fonction n'a pas été portée sur d'autres SGBD), on peut aussi utiliser la commande DESCRIBE (voir la note dans le document à l'adresse indiquée plus haut).

Non moins typiquement: DESCRIBE maTable;

Sans savoir où est barré le point, on peut se permettre de le virguler...

Have fun zazadec :}
Bonsoir, je voulais remercier Zazadec, car "DESCRIBE" marche, mais ce que je comprend pas, pourquoi SHOW COLUMNS FROM maTable; ne marche pas ???
Je suis sous Oracle SQL Developer
et merci encore
erratum. fallait lire "j'imposerai que la table ne soit pas vide".
Messages postés
29
Date d'inscription
samedi 27 juin 2009
Statut
Membre
Dernière intervention
5 février 2010
8
Si tu souhaites reccupérer et concaténer la liste des colonnes pour un insérer des données provennat de plusieurs table, voici un autre script :

http://ww11.xoowiki.com/Article/SQL-Server/concatenation-des-noms-de-colonnes-386.aspx
re

j'ai trouvé quelque chose dans le genre
sp_columns @table_name = 'table', @column_name = 'COLUMN_NAME'
mais ça marche pas mieux. théoriquement ça devrait. y-a-t il une erreur de syntaxe ?

merci
salut seb,

merci pour l'idée, j'y ai pensé à un moment mais ceci ne doit pas marcher si la table est vide... et à vrai dire je ne sais pas si elle peut l'être ou non donc dans le doute : )

s'il y a une solution qui marche même lorsque la table est vide, ce serait mieux.

merci quand même. au pire j'imposerai que la table soit vide...
nickel !! merci beaucoup !! je teste ça au bureau demain alors.
Messages postés
32840
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 358
Non ça marche dès le moment où la table est créée, vide ou non.