sql - 将 SQL 列从浮点型更改为小数类型

标签 sql sql-server tsql

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/

相关文章:

c# - 如何使用 Join 搜索字段?

c# - 在 C# 中仅获取输出参数中的第一个字符

sql - 聚簇索引必须是唯一的吗?

sql - T-SQL中的连接语法有什么区别

mysql - 需要有关返回公共(public)行的 MYSQL 查询的帮助

MySQL 错误 1111 - 嵌套窗口函数时组函数的使用无效

mysql - SQL 为 WHERE IN 做准备

sql - text 或 ntext 数据类型上 REPLACE 的替代方案

sql - 如何更改列 nvarchar 长度而不丢失

sql - T-SQL : How to fill a column with user's department?