SQL Server出现Arithmetic overflow error varchar转numeric报错原因求解
算术溢出报错原因说明
你出现报错的核心原因是对SQL Server中numeric(precision, scale)数据类型的参数定义理解有误,具体逻辑如下:
numeric类型的第一个参数*精度(precision)*指的是整个数值中所有有效数字的总位数,同时包含整数部分和小数部分的数字,并非仅指代整数位的最大长度- 第二个参数*小数位数(scale)*指的是小数点右侧的有效数字位数
对于你使用的numeric(18,3)类型:
可存储的整数部分最大长度为 18 - 3 = 15 位,小数部分固定最多3位。
你输入的777777777777777777是18位纯整数,仅整数部分就已经达到18位,远远超出了15位的整数位上限,在做字符串转numeric类型转换时就会触发算术溢出错误。
额外补充前端设置的问题:你将输入框最大长度设为18本身就不符合字段限制,该字段支持的最长输入字符数为19位(15位整数+1位小数点+3位小数),如果是纯整数输入最多只能允许输入15位。
内容的提问来源于stack exchange,提问作者Unknown
相关产品推荐
相关产品推荐

