黑马程序员技术交流社区

标题: SQL NUMERIC数据类型问题 [打印本页]

作者: 申延超    时间: 2012-11-22 22:13
标题: SQL NUMERIC数据类型问题
网上查的资料说一个NUMERIC型数据的整数部分最大只能有28位,小数部分的位数必须小于或等于整数部分的位数,小数部分可以是零。
还有说一个NUMERIC型字段可以存储从-10^38到10^38范围内的数。
    既然整数部分最大只能有28位,那如何能存10的38次方的数?麻烦懂的同学解释下NUMERIC这个数据类型,谢谢!

作者: 欧玉斌    时间: 2012-11-23 12:06
本帖最后由 欧玉斌 于 2012-11-23 12:18 编辑

翻了书,开了百度,都没有得到答案,
只是看到一种说法:SQL Server 为了和前端开发工具配合其所支持的数据精度默认最大为28 位。
不知道是不是说,存10^38是可以存下的,不过为了配合开发,就只存28位整数了???
但在sql2005操作的时候,却发现,整数部分输入29个数字也是可以的。
如字段score设为numeric(38, 0),我输入12345678901234567890123456789,也未识别出异常,再多输一个的时候,就出错了。
那么vs里有没有这种现象呢?C#里没有numeric,sql里numeric和decimal是一样的,为了测试一下,
我在vs2008里写了decimal a=12345678901234567890123456789m;发现是可以通过的,但多加一个数就出错了。
鼠标选到decimal,转到定义,发现
public const decimal MaxValue = 79228162514264337593543950335m;C#里定义的decimal的最大值是79228162514264337593543950335m(额,不知道这个数怎么来的)
而79228162514264337593543950335也恰巧是29位数。
越搞越郁闷了{:soso_e117:}
作者: 申延超    时间: 2012-11-23 13:11
欧玉斌 发表于 2012-11-23 12:06
翻了书,开了百度,都没有得到答案,
只是看到一种说法:SQL Server 为了和前端开发工具配合其所支持的数据 ...

谢谢,非常感谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2