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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将varchar转换为十进制棒球平均值相关的知识,希望对你有一定的参考价值。

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

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

但我得到错误:

Msg 8115,Level 16,State 8,Line 146 算术溢出错误将数字转换为数据类型数字。

答案

我需要将值22.30转换为0.223。

你需要将它除以100.0,然后DECIMAL(4, 3)就可以了

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

SELECT @Value

返回:

0.223

所以,你需要首先UPDATE你的表,然后ALTER [BB Percent]列。

简单的方法是:

  • 添加新列DECIMAL(4, 3)
  • 将数据移入其中。
  • 放下旧栏目。
  • 重命名新的。

--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';

请享用!

Live Demo


更新:

您还可以添加计算列并保留[BB Percent]列,这样可以确保您可以获得实际数据和计算数据。

ALTER TABLE badv2018
ADD New AS CAST([BB Percent] / 100.0 AS DECIMAL(4, 3));
另一答案

使其更广泛的价值。例如:

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);

以上是关于将varchar转换为十进制棒球平均值的主要内容,如果未能解决你的问题,请参考以下文章

将 VARCHAR 转换为 Datetime 并将 VARCHAR 转换为 Decimal 时创建外部表错误

SQL Server 2005:将 varchar 值“1.23E-4”转换为十进制失败

c_cpp C片段将十进制转换为二进制

将平均值(十进制)转换为年、月和日

在 MySql 中将 VARCHAR 转换为 DECIMAL 值

在存储过程中将 varchar 转换为数字时出错