将numeric转换为数据类型numeric是出现算术溢出错误

将numeric转换为数据类型numeric是出现算术溢出错误 

        相信很多朋友都遇到过这样的问题,今天我也痛苦了好长时间.从网上得到的答案无非就是把这个标题解释一下,以便傻到我这种程度的人都能看明白,可惜我没看到有谁说到了点子上,希望本文能对您有点启发.

        其实说到最根本,就是大家对sql的一些最基本的概念还不清晰,大多数这种溢出都是由这个原因造成的.为了帮助和我"傻平"程度差不多的兄弟们,我就把今天遇到的问题拿出来,和大家一起分析一下.

        我遇到溢出是给一个numeric(12,4)这个类型的列赋值(通过临时构造的dataset而非强类型的dataset,如果是强类型就不会这么痛苦了).为了方便描述,暂且把这个字段叫做price.numeric(12,4)这个定义有多少人能够准确的描述出其含义呢?正是对这个基本概念的模糊才遇到了今天的问题.其实我做的是一个excel的数据导入,为了验证其数据的正确性,我还特此写了正则,避免将脏数据存到数据库中.我的正则是这样的 ^((([0-9]?)|[1-9][0-9]{0,11})([.][0-9]{1,4})?)$ 设断点跟踪一切正常,只是在update的时候会报标题那个错误.

        看生成的实体类,对照数据库的字段,挨条跟踪数据,虽然抑郁很久,但还是没找到原因.逼急了,哥们我拿数据直接填到数据表里,结果出错了,到这个时候才明白一件事:numeric(12,4)的意思:说的通俗点就是:小数点前最多有8位,小数点后有四位,不足四位补0,超过4位小数则四舍五入.

        如果您也遇到了问题,看看是不是也是这个原因?

        基本概念,有时候真的是个大问题啊!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值