Umwandlung von Typen mittels einer Funktion
Wenn du nicht zu viel Platz für eine bestimmte varchar
-Spalte reservieren willst, kannst du die Werte vor der Umwandlung * abschneiden*.
Dazu kannst du die folgende Syntax verwenden:
ALTER TABLE table_name
ALTER COLUMN column_name
TYPE varchar(x)
USING SUBSTRING(column_name FROM 1 FOR x)
Du solltest es so lesen: Da du nur x
Zeichen für column_name
reservieren willst, musst du von jedem Wert einen SUBSTRING
behalten, also die ersten x
Zeichen, und den Rest verwerfen. Auf diese Weise entsprechen die Werte den Anforderungen von varchar(x)
.
Diese Übung ist Teil des Kurses
Einführung in relationale Datenbanken in SQL
Anleitung zur Übung
- Führe den Beispielcode unverändert aus und beachte den Fehler.
- Verwende nun
SUBSTRING()
, umfirstname
auf 16 Zeichen zu verkürzen, damit der Typ invarchar(16)
geändert werden kann.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
-- Convert the values in firstname to a max. of 16 characters
ALTER TABLE professors
ALTER COLUMN firstname
TYPE varchar(16)