将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位小数则四舍五入.

作者:wangchao1982 
来源:CSDN 
原文:https://blog.csdn.net/wangchao1982/article/details/1882571 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/ClearLoveQ/article/details/85075196