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



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

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

但是我得到错误:

Msg 8115,级别 16,状态 8,第 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';

享受!

现场演示


更新:

您还可以添加一个计算列并保留[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);

最新更新