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

来源:互联网 发布:绘制logoo软件 编辑:程序博客网 时间:2024/05/22 12:24

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

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

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

0 0
原创粉丝点击