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

wic*_*low 1 sql t-sql sql-server

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

alter table badv2018
    alter column [BB Percent] decimal(4, 3) 
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

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

Sam*_*ami 5

我需要将值 22.30 转换为 0.223。

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

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

SELECT @Value
Run Code Online (Sandbox Code Playgroud)

返回:

0.223
Run Code Online (Sandbox Code Playgroud)

所以,你需要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';
Run Code Online (Sandbox Code Playgroud)

享受!

现场演示


更新:

您也可以添加一个计算列并离开该[BB Percent]列,这样可以确保您可以获得真实数据和计算数据。

ALTER TABLE badv2018
ADD New AS CAST([BB Percent] / 100.0 AS DECIMAL(4, 3));
Run Code Online (Sandbox Code Playgroud)