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 行
将数字转换为数据类型数字的算术溢出错误。
我需要将值 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)