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

Ver Curso

Instruções de exercício

  • Execute o código de exemplo como está e observe o erro.
  • Agora, use SUBSTRING() para reduzir firstname a 16 caracteres para que o tipo possa ser alterado para varchar(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)