SQL server query to get the list of columns in a table along with Data types, NOT NULL, and PRIMARY KEY constraints
To avoid duplicate rows for some columns, use user_type_id instead of system_type_id.
SELECT
c.name 'Column Name',
t.Name 'Data type',
c.max_length 'Max Length',
c.precision ,
c.scale ,
c.is_nullable,
ISNULL(i.is_primary_key, 0) 'Primary Key'
FROM
sys.columns c
INNER JOIN
sys.types t ON c.user_type_id = t.user_type_id
LEFT OUTER JOIN
sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id
LEFT OUTER JOIN
sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
WHERE
c.object_id = OBJECT_ID('YourTableName')
Just replace YourTableName
with your actual table name - works for SQL Server 2005 and up.
In case you are using schemas, replace YourTableName
by YourSchemaName.YourTableName
where YourSchemaName
is the actual schema name and YourTableName
is the actual table name.
SQL Server query to get data type for all columns in table?
SELECT c.name,
c.max_length,
c.precision,
c.scale,
c.is_nullable,
t.name
FROM sys.columns c
JOIN sys.types t
ON c.user_type_id = t.user_type_id
WHERE c.object_id = Object_id('dbo.testtable')
Related Topics
How Would You Implement Sequences in Microsoft SQL Server
Constraint for Only One Record Marked as Default
Insert Picture into SQL Server 2005 Image Field Using Only SQL
How to Do a Max(Count(*)) in SQL
How to Delete from Multiple Tables in the Same SQL Statement
Using Tuples in SQL "In" Clause
Are There Any Way to Execute a Query Inside the String Value (Like Eval) in Postgresql
Sql: How to Properly Check If a Record Exists
Does Db2 Have an "Insert or Update" Statement
Transpose Rows into Columns in Bigquery (Pivot Implementation)
Splitting Delimited Values in a SQL Column into Multiple Rows
SQL Server Convert Integer to Binary String
Which SQL Query Is Better, Match Against or Like
Conversion of a Varchar Data Type to a Datetime Data Type Resulted in an Out-Of-Range Value
Should I Design a Table with a Primary Key of Varchar or Int