PostgreSQL Change Column Type
Summary: this tutorial shows you step-by-step how to change the data type of a column by using the ALTER TABLE... ALTER COLUMN
statement.
PostgreSQL change column type statement
To change the data type of a column, you use the ALTER TABLE
statement as follows:
In this syntax:
- First, specify the name of the table to which the column you want to change after the
ALTER TABLE
keywords. - Second, provide the name of the column that you want to change the data type after the
ALTER COLUMN
clause. - Third, supply the new data type for the column after the
TYPE
keyword. TheSET DATA TYPE
andTYPE
are equivalent.
To change the data types of multiple columns in a single statement, you use multiple ALTER COLUMN
clauses like this:
In this syntax, you add a comma (,
) after each ALTER COLUMN
clause.
PostgreSQL allows you to convert the values of a column to the new ones while changing its data type by adding a USING
clause as follows:
The USING
clause specifies an expression that allows you to convert the old values to the new ones.
If you omit the USING
clause, PostgreSQL will cast the values to the new ones implicitly. If the cast fails, PostgreSQL will issue an error and recommend you provide the USING
clause with an expression for the data conversion.
The expression after the USING
keyword can be as simple as column_name::new_data_type
such as price::numeric
or as complex as a custom function.
PostgreSQL change column type examples
Let’s take some examples of changing column type.
Setting up a sample table
The following creates a new table called assets
and insert some rows into the table:
Output:
1) Changing one column example
The following example uses the ALTER TABLE ... ALTER COLUMN
statement to change the data type of the name
column to VARCHAR
:
Output:
The output indicates that the statement successfully changed the type of the column.
2) Changing multiple columns example
The following statement changes the data types of description
and location
columns from TEXT
to VARCHAR
:
Output:
3) Changing a column from VARCHAR to INT example
The following example uses the ALTER TABLE ... ALTER COLUMN
statement to change the data type of the asset_no
column to integer:
PostgreSQL issued an error and a helpful hint:
To both change the type of a column and cast data from VARCHAR
to INT
, you can use the USING
clause:
Output:
Summary
- Use the
ALTER TABLE ... ALTER COLUMN
statement to change the data type of a column.