float
列を持つテーブルがあります。すべてのレコードのこの列のすべての値はNULL
です。データ型をdatetime
に変更します。
私はクエリを実行しました:
ALTER TABLE MyTable ALTER Column MyColumn DATETIME NULL
できます。しかし、データタイプをfloat
に設定して変更を元に戻そうとすると:
ALTER TABLE MyTable ALTER Column MyColumn FLOAT NULL
私は例外を受け取ります:
データ型datetimeからfloatへの暗黙的な変換は許可されていません。このクエリを実行するには、CONVERT関数を使用します。
列MyColumnはすべてのレコードでnullであることに注意してください。
列にデータがない場合は、それをドロップして再度追加するだけです。
alter table MyTable drop column MyColumn;
go
alter table MyTable add MyColumn float;
列にデータがあり、値をfloat値に変換するのが理にかなっている場合は、列の名前を変更し、新しい列を追加して、convert
を使用してデータを移動し、古い列を削除できます。
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;