Sql Server 2000中类型的算术溢出错误

时间:2014-03-10 09:58:57

标签: sql sql-server sql-server-2000

在SQL SERVER 2000表中,有一个名为Kpi of float type的列。 当尝试将该列转换为varchar(cast(kpi as varchar(3)))时,它会出错

Msg 232, Level 16, State 2, Line 1
Arithmetic overflow error for type varchar, value = 26.100000.

事情是该列只有一个不同的值,即26.1。 我无法理解为什么在将其转换为varchar时会出现错误!

3 个答案:

答案 0 :(得分:2)

您的错误已在26.1中完全停止。

您已应用此命令:

cast(kpi as varchar(3))

首先:将从varchar(3)转换为varchar(4)(以获得完全停止后的第一个值)

所以你会:

此行在26.1

中转换值26.10000000

然后你申请varchar(26.1)不正确!

Varchar类型只需要整数值作为大小。

为什么要应用最后一个varchar?我认为你必须删除外部varchar并只留下强制转换函数

答案 1 :(得分:2)

请改为尝试:

declare @x float = 26.1
select left(@x,3)

结果将是26。

答案 2 :(得分:1)

非重复值为26.1, 4个字符长度,并且尝试将其强制转换为强制转换(kpi为varchar(3))...如果将其更改为强制转换( kpi as varchar(4))它会起作用并且得到26.1