Rechercher : dans
Par :

[SQL Server] nom des champs d'une table

Dernière réponse le 7 jui 2009 à 10:30:26 Freddy, le 25 mai 2004 à 17:55:24 
 Signaler ce message aux modérateurs

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,

1

Freddy, le 25 mai 2004 à 18:04:32

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

Répondre à Freddy

2

sebsauvage, le 25 mai 2004 à 18:18:35
  • +1

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

Répondre à sebsauvage

3

Freddy, le 25 mai 2004 à 18:45:06

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...

Répondre à Freddy

4

Freddy, le 25 mai 2004 à 18:46:06

Erratum. fallait lire "j'imposerai que la table ne soit pas vide".

Répondre à Freddy

5

sebsauvage, le 25 mai 2004 à 18:57:06

Non ça marche dès le moment où la table est créée, vide ou non.

Répondre à sebsauvage

6

Freddy, le 25 mai 2004 à 19:12:11

Nickel !! merci beaucoup !! je teste ça au bureau demain alors.

Répondre à Freddy

7

ced, le 26 jun 2007 à 17:19:00

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)

Répondre à ced

8

zazadec, le 10 jun 2008 à 00:43:16
  • +2

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'

Répondre à zazadec

9

MeuhSQL, le 18 jun 2008 à 14:07:10

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 :}

Répondre à MeuhSQL

10

spoutnik09, le 6 jui 2009 à 08:13:37

* 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

Répondre à spoutnik09

11

 Sacha79, le 7 jui 2009 à 10:30:26

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://www.xoowiki.com/...

Répondre à Sacha79