Converta tipos usando uma função
Se não quiser reservar muito espaço para uma determinada coluna varchar
, você pode truncar os valores antes de converter o tipo.
Para isso, pode usar a seguinte sintaxe:
ALTER TABLE table_name
ALTER COLUMN column_name
TYPE varchar(x)
USING SUBSTRING(column_name FROM 1 FOR x)
A forma de ler é assim: como você deseja reservar apenas x
caracteres para column_name
, é necessário manter uma SUBSTRING
de cada valor, ou seja, os primeiros x
caracteres dela, e descartar o restante. Dessa forma, os valores se ajustarão aos requisitos devarchar(x)
.
Este exercício faz parte do curso
Introdução aos Bancos de Dados Relacionais em SQL
Instruções de exercício
- Execute o código de exemplo como está e observe o erro.
- Agora, use
SUBSTRING()
para reduzirfirstname
a 16 caracteres para que o tipo possa ser alterado paravarchar(16)
.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
-- Convert the values in firstname to a max. of 16 characters
ALTER TABLE professors
ALTER COLUMN firstname
TYPE varchar(16)