将 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
我正在尝试将 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