Ich habe eine Tabelle mit einer float
Spalte. Alle Werte in dieser Spalte für alle Datensätze sind NULL
. Ich möchte den Datentyp in datetime
ändern.
Ich habe die Abfrage ausgeführt:
ALTER TABLE MyTable ALTER Column MyColumn DATETIME NULL
Es klappt. Aber wenn ich versuche, die Änderungen rückgängig zu machen, indem ich den Datentyp auf float
setze:
ALTER TABLE MyTable ALTER Column MyColumn FLOAT NULL
Ich bekomme die Ausnahme:
Eine implizite Konvertierung vom Datentyp datetime in float ist nicht zulässig. Verwenden Sie die CONVERT-Funktion, um diese Abfrage auszuführen.
Beachten Sie, dass die Spalte MyColumn für alle Datensätze null ist.
Ohne Daten in der Spalte können Sie sie einfach löschen und erneut hinzufügen.
alter table MyTable drop column MyColumn;
go
alter table MyTable add MyColumn float;
Wenn Ihre Spalte Daten enthält und es sinnvoll ist, die Werte in einen Gleitkommawert umzuwandeln, können Sie die Spalte umbenennen, eine neue Spalte hinzufügen, die Daten mit convert
verschieben und dann die alte Spalte löschen.
exec sp_rename 'MyTable.MyColumn', 'Temp_MyColumn', 'COLUMN';
go
alter table MyTable add MyColumn float;
go
update MyTable
set MyColumn = convert(float, Temp_MyColumn)
where Temp_MyColumn is not null;
go
alter table MyTable drop column Temp_MyColumn;