Get the Data Type of Columns in SQL Server

You can use the following query to get the data type of columns in SQL Server:

SELECT 
TABLE_CATALOG,
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS

Next, you’ll see 3 scenarios to get the data type:

  • of all columns in a particular database
  • of all columns in a particular table
  • for a specific column

3 Scenarios to Get the Data Type of Columns in SQL Server

Scenario 1 – Get the data type of all columns in a particular database

To begin, select your desired database.

For example, assume that you have a database called the ‘test_database‘ which includes 3 tables.

You can then run the following query in order to get the data type of all the columns in the test_database:

SELECT 
TABLE_CATALOG,
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS

Here is an example of the results that you may get, where the data type of each column is captured under the DATA_TYPE field:

TABLE_CATALOGTABLE_SCHEMATABLE_NAMECOLUMN_NAMEDATA_TYPE
test_databasedbocarsbrandnvarchar
test_databasedbocarspriceint
test_databasedbopeoplefirst_namenvarchar
test_databasedbopeoplelast_namenvarchar
test_databasedbopeopleageint
test_databasedbopetsnamenvarchar
test_databasedbopetsageint

Scenario 2 – Get the data type of all columns in a particular table

Let’s say that you want to find the data type of the columns under the ‘people‘ table. In that case, add WHERE TABLE_NAME = ‘people’ at the bottom of the query:

SELECT 
TABLE_CATALOG,
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'people'

There are 3 columns in the ‘people‘ table. For the first two columns (first_name and last_name) the data type is nvarchar, while the data type for the last column (age) is int for integers:

TABLE_CATALOGTABLE_SCHEMATABLE_NAMECOLUMN_NAMEDATA_TYPE
test_databasedbopeoplefirst_namenvarchar
test_databasedbopeoplelast_namenvarchar
test_databasedbopeopleageint

Scenario 3 – Get the data type for a specific column

Lastly, get the data type for the first_name column (under the people table):

SELECT 
TABLE_CATALOG,
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'people'
AND COLUMN_NAME = 'first_name'

As you may see, the data type for the first_name column is nvarchar:

TABLE_CATALOGTABLE_SCHEMATABLE_NAMECOLUMN_NAMEDATA_TYPE
test_databasedbopeoplefirst_namenvarchar

Optionally, you can also include the CHARACTER_MAXIMUM_LENGTH field in the query:

SELECT 
TABLE_CATALOG,
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'people'
AND COLUMN_NAME = 'first_name'

In this case, the CHARACTER_MAXIMUM_LENGTH is 50.

Leave a Comment