黑马程序员技术交流社区
标题:
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