Justin Cooney

Web Development Tips and Examples

Sometimes using the SSMS GUI table designer is a hassle when compared with directly querying the table structure using a simple SQL statement.

For example if you are right in the middle of editing a stored procedure and want to know the data types and sizes of some columns for a table or two, then rather than navigating away from your procedure, you can do a lookup within the code itself. This saves you a lot of tabbing between windows since the table information is right where you need it; where you are writing your code.

1) Query the SQL Server information schema views:

USE MyDataBase
GO
SELECT TABLE_NAME
,ORDINAL_POSITION
,COLUMN_NAME
,DATA_TYPE
,CHARACTER_MAXIMUM_LENGTH
,IS_NULLABLE
,COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME IN ('MyTableName','MySecondTable')
ORDER BY TABLE_NAME,COLUMN_NAME ASC

2) Query the System objects/Columns/Types Tables

USE MyDataBase
 GO
 SELECT [tblObjects].NAME AS [TABLE NAME]
 ,[tblColumns].NAME AS [COLUMN NAME]
 ,[tblTypes].NAME AS [DATA TYPE]
 ,[tblColumns].MAX_LENGTH AS [SIZE]
 ,[tblColumns].is_nullable [IS_NULLABLE]
 FROM .SYS.OBJECTS AS [tblObjects]
 INNER JOIN SYS.COLUMNS AS [tblColumns] ON [tblObjects].OBJECT_ID=[tblColumns].OBJECT_ID
 INNER JOIN SYS.TYPES AS [tblTypes] ON [tblColumns].SYSTEM_TYPE_ID=[tblTypes].SYSTEM_TYPE_ID
 WHERE [tblObjects].TYPE_DESC='USER_TABLE'
 AND [tblObjects].NAME IN ('MyTableName','MySecondTable')
 ORDER BY [tblObjects].NAME,[tblTypes].NAME

Both of these methods work very nicely in SQL Server 2005 and SQL Server 2008. The Information_Schema structure complies with the ISO standard definition, so this version of the lookup should be supported by any modern ISO-compliant database.

If you are interested in some more handy t-SQL queries and tips, have a look at this collection of articles.

Posted in , , , , , ,

2 responses to “SQL Server: T-SQL to Show Table Column Information”

  1. […] How to query the SQL Server information schema views or System objects/Columns/Types tables to retrieve detailed table column information.  […]

  2. […] core of the query is a query to the systems tables that I covered in an earlier article. This query lets you search for table column information using […]

Leave a comment