Konvertera typer med hjälp av en funktion
Om du inte vill reservera för mycket utrymme för en viss varchar-kolumn kan du trunkera värdena innan du konverterar dess typ.
För detta kan du använda följande syntax:
ALTER TABLE table_name
ALTER COLUMN column_name
TYPE varchar(x)
USING SUBSTRING(column_name FROM 1 FOR x)
Du kan läsa det såhär: Eftersom du bara vill reservera x tecken för column_name behöver du behålla en SUBSTRING av varje värde – det vill säga de första x tecknen – och kasta bort resten. På så sätt ryms värdena inom kravet för varchar(x).
Den här övningen är en del av kursen
Introduktion till relationsdatabaser i SQL
Övningsinstruktioner
- Kör exempelkoden som den är och notera felmeddelandet.
- Använd nu
SUBSTRING()för att korta nedfirstnametill 16 tecken så att dess typ kan ändras tillvarchar(16).
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
-- Convert the values in firstname to a max. of 16 characters
ALTER TABLE professors
ALTER COLUMN firstname
TYPE varchar(16)