CREATE TABLE [dbo].[TES_Tracks](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Rate] [float] NULL,
[TOL] [datetime] NOT NULL
)
我想将速率列更改为十进制(28,6)。我已经有很多
此表中的数据为浮点格式。我害怕任何数据丢失。
我该怎么做呢?
最佳答案
未经测试,但他的可能值得一试......
ALTER TABLE [dbo].[TES_Tracks] ADD [RateNew] DECIMAL(28,6);
UPDATE [dbo].[TES_Tracks] set RateNew = Cast(Rate as Decimal(28,6));
由于 sql server 隐式地处理十进制与浮点数,如果您有数据丢失,这应该为您提供行。
Select * From [dbo].[TES_Tracks] where Rate <> RateNew;
那么如果你满意...
ALTER TABLE [dbo].[TES_Tracks] DROP COLUMN [Rate];
然后将 RateNew 列重命名为 Rate
EXEC sp_RENAME 'TES_Tracks.RateNew' , 'Rate', 'COLUMN'
关于sql - 将 SQL 列从浮点型更改为小数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23527871/