将varchar转换为十进制棒球平均值

时间:2019-01-12 19:28:56

标签: sql sql-server tsql

我上传了一个CSV文件,该文件将我所有的列自动转换为varchar。我需要将值22.30转换为0.223。

alter table badv2018
    alter column [BB Percent] decimal(4, 3) 

但是我得到了错误:

  

信息8115,第16级,状态8,第146行
  将数字转换为数据类型数字的算术溢出错误。

2 个答案:

答案 0 :(得分:4)

  

我需要将值22.30转换为0.223。

您需要将其设置为100.0,然后enum就可以了

DECIMAL(4, 3)

返回:

DECLARE @Value DECIMAL(4, 3) = 22.3 / 100.0;

SELECT @Value

因此,您需要先0.223 表,然后UPDATE ALTER列。

简单的方法是:

  • 添加新列[BB Percent]
  • 将数据移入其中。
  • 删除旧列。
  • 重命名新的。

DECIMAL(4, 3)

享受!

Live Demo


更新:

您还可以添加一个计算列,并保留--First step ALTER TABLE badv2018 ADD New DECIMAL(4, 3); --Second step UPDATE badv2018 SET New = [BB Percent] / 100.0; --Third step ALTER TABLE badv2018 DROP COLUMN [BB Percent]; --The last step EXEC sp_rename 'badv2018.New', 'BB Percent', 'COLUMN'; 列,这样可以确保您可以获得真实数据和计算所得的数据。

[BB Percent]

答案 1 :(得分:2)

使其具有更大的价值。例如:

alter table badv2018
    alter column [BB Percent] decimal(10, 3) 

(4, 3)只能代表0.000到9.999之间的值。您可能真的想要(6, 3),所以10太过分了。

然后可以添加具有所需结果的另一列:

alter table badv2018
    add column bb_ratio as ([BB Percent] / 100);