数字类型和货币类型
1. 数字数据... 1
1.1. 整型数据... 1
1.2. 小数数据... 1
1.3. 近似数字数据... 2
2. 货币数据... 2
数字数据只包含数字。数字数据包括正数、负数、小数、分数和整数。
整型数据由负整数或正整数组成,如 -15、0、5 和 2509。
在Microsoft SQL Server 2000 中,整型数据使用 bigint、int、smallint 和 tinyint 数据类型存储。bigint 数据类型可存储的数字范围比 int 数据类型广。int 数据类型比 smallint 数据类型的存储范围大,而 smallint 的数值范围又比 tinyint 类型大。
bigint 数据类型存储从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 范围内的数字。存储大小为 8 个字节。
int 数据类型的存储范围是 -2,147,483,648 至 2,147,483,647(每个值需 4 个字节的存储空间)。
smallint 数据类型的存储范围只有 -32,768 至 32,767(每个值需 2 个字节的存储空间)。
tinyint 数据类型只能存储 0 至 255 范围内的数字(每个值需 1 个字节的存储空间)。
Decimal 数据包含存储在最小有效数上的数据。
在 SQL Server中,小数数据使用 decimal 或 numeric 数据类型存储。存储 decimal 或 numeric 数值所需的字节数取决于该数据的数字总数和小数点右边的小数位数。例如,存储数值 19283.29383 比存储 1.1 需要更多的字节。
在 SQL Server中,numeric 数据类型等价于 decimal 数据类型。
【decimal 和numeric详解】
带定点精度和小数位数的 numeric 数据类型。
decimal[(p[, s])] 和 numeric[(p[, s])]
定点精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义词是 dec 和 dec(p, s)。
p(精度)
指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从 1 到最大精度之间的值。最大精度为 38。
s(小数位数)
指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 p 之间的值。默认小数位数是 0,因而 0 <= s <= p。最大存储大小基于精度而变化。
精度 存储字节数
1 - 9 5
10-19 9
20-28 13
29-38 17
近似数字(浮点)数据包括按二进制计数系统所能提供的最大精度保留的数据。在 SQL Server 中,近似数字数据以 float 和 real 数据类型存储。例如,分数 1/3 表示成小数形式为 0.333333(循环小数),该数字不能以近似小数数据精确表示。因此,从 SQL Server 获取的值可能并不准确代表存储在列中的原始数据。又如,以 .3, .6, .7 结尾的浮点数均为数字近似值。
货币数据表示正的或负的货币值。
在 Microsoft SQL Server 2000 中使用 money 和 smallmoney 数据类型存储货币数据。货币数据存储的精确度为四位小数。
可以存储在 money 数据类型中的值的范围是 -922,337,203,685,477.5808 至 +922,337,203,685,477.5807(需 8 个字节的存储空间)。
可以存储在 smallmoney 数据类型中的值的范围是 -214,748.3648 至 214,748.3647(需 4 个字节的存储空间)。如果数值超过了上述范围,则可使用 decimal 数据类型代替。
【money 和smallmoney详解】
代表货币或现金值的货币数据类型。
money
货币数据值介于 -2^63 (-922,337,203,685,477.5808) 与 2^63 - 1 (+922,337,203,685,477.5807) 之间,精确到货币单位的千分之十。存储大小为 8 个字节。
smallmoney
货币数据值介于 -214,748.3648 与 +214.748,3647 之间,精确到货币单位的千分之十。存储大小为 4 个字节。