将 varchar 转换为 decimal 数据类型时出现算术溢出错误

Arithmetic overflow error while converting varchar to decimal datatype

我正在尝试将 varchar(14) 转换为 Decimal(14,2)。 我的代码类似于

Declare @varchar_variable varchar(14), @decimal_variable decimal(14,2)

Set @varchar_variable = '189'

Select @decimal_variable = Convert(Decimal(14,2),@varchar_variable)

当@varchar_variable 的值很大时(例如'10000000000189'),我只会收到算术溢出错误消息

为什么我会收到较大值的错误消息?像 10000000000189 这样的值是否超出十进制数据类型的范围?如果是,SQL.

中十进制数据类型的范围是多少

如评论所述,Decimal(14,2)总共包含14位数字。

尝试增加变量大小;

Select Convert(Decimal(16,2),'10000000000189')

您需要定义 Decimal(16,2) 以将 varchar(14) 转换为十进制。您也可以使用 Cast 而不是 Convert。

Declare @varchar_variable varchar(14), @decimal_variable decimal(16,2)

Set @varchar_variable = '10000000000189'


Select @decimal_variable = CAST(@varchar_variable AS DECIMAL(16,2))

-- Select @decimal_variable = Convert(Decimal(16,2),@varchar_variable)

SELECT @decimal_variable