Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a succinct way to retrieve a list of table column names with T-SQL?

When I'm looking round a SQL Server database I often want to interactively retrieve a simple list of column names for a database table (no data type information etc., just the names) using sqlcmd.

I can do this:

EXEC sp_columns @table_name = 'tablename'

which gives me much more than I want and wraps in a command prompt to the extent that it is close to unintelligible, or I can do this:

SELECT col.name 
FROM sysobjects obj 
INNER JOIN syscolumns col
ON obj.id = col.id where obj.name = 'tablename'

which gives me what I want but is a bit verbose.

I'd like to be able to do something like this:

SELECT column_name
FROM (EXEC sp_columns @table_name = 'tablename')

but that doesn't work (see, for example, this question).

Is there a more succinct way to do this (i.e. one that is easier to type at the command line and therefore less error prone)?

like image 881
Matthew Murdoch Avatar asked Jan 06 '10 11:01

Matthew Murdoch


People also ask

How do I get a list of column names in SQL query?

USE db_name; DESCRIBE table_name; it'll give you column names with the type.

How can you list all columns for a given table in MySQL?

You can list a table's columns with the mysqlshow db_name tbl_name command. The DESCRIBE statement provides information similar to SHOW COLUMNS .

How do I get a list of all columns in a table?

We can verify the data in the table using the SELECT query as below. We will be using sys. columns to get the column names in a table. It is a system table and used for maintaining column information.


2 Answers

Look at the ANSI-defined INFORMATION_SCHEMA views. Try SELECT * FROM INFORMATION_SCHEMA.COLUMNS for starters and go on from there.

Your example would require this SQL:

SELECT column_name
FROM information_schema.columns
WHERE table_name = 'tablename'
like image 89
David M Avatar answered Oct 27 '22 10:10

David M


SELECT [name] FROM sys.columns WHERE [object_id] = OBJECT_ID('MyTable')

Catalog views:

We recommend that you use catalog views because they are the most general interface to the catalog metadata and provide the most efficient way to obtain, transform, and present customized forms of this information. All user-available catalog metadata is exposed through catalog views.

Purely personal, but I don't like the INFORMATION_SCHEMA views

like image 43
gbn Avatar answered Oct 27 '22 11:10

gbn