数字类型(Numeric):
包含两个子类:精确数字与近似数字。精确数字类型对应有限范围内的数值。
数据类型 |
范围 |
存储 |
bigint | -2^63(-9223372036854775808)到2^63-1(9223372036854775807)到2^63() |
8 |
int |
-2^31(-2147483648)到-2^31-1(-2147483647) |
4 |
smallint | -2^15(-32768)到2^15-1(-32767) |
2 |
tinyint | 0-255 |
1 |
money |
-922337203685477.5808到922337203685477.5807 |
8 |
smallmoney | -214748.3648到214748.3647 |
4 |
精确数字类型还包括另外两种数据类型:decimal 和 numeric。两者在小数位与精度上有细微的差别。本质功能上是等价的,即存储的内容与存储的方式是一致的。精度指的是最多可以存储的数字的总位数,包括小数点左边和右边的位数。精度值的范围为 1-38。默认精度为 18。而小数指的是小数点右边可以存储的十进制数字的最大位数。小数位数必须是 0 到精度 p 之间的值。因此向存储一个精度为 4 的数字,小数点左右两边各有 2位,则应该使用的数据类型为 decimal(4,2)。
精度 |
存储字节数 |
1~9 |
5 |
10~19 |
9 |
20~28 |
13 |
29~38 |
17 |
近似数字子类类似于 decimal 和 numeric 型,其中有一种也有精度,即浮点(float)型;
另一种 real 型则没有精度值,但可以存储数高达 7 位的数字,位数包括小数点左边和右边的数字。例如,想在 real 型中存储数字 1234.5678 时,其值近似为 1234.568。当然如果希望精度保持不变,这应该将数字存储在 float(25) 中。
decimal 和 float 数据类型间主要的区别在于:前者存储的精度级别更高。
n 值 |
精度 |
存储大小 |
1~24 |
7 位数 |
4 字节 |
25~53 |
15 位数 |
8 字节 |