5.数字数据类型: 包括decimal(p,s)和numeric(p,s)两种数据类型。 在这两种数据类型中可以精确指定小数点两边的总位数。(精度,precision简写为p)和小数点右边的位数(刻度,scale简写为s)。 ・ p(精度): 指定小数点左边和右边可以存储的十进制数字的最大个数,即整数部分最大的取值范围从-10exp(p)+1到10exp(p)-1,而实际情况取值范围从-10exp(p-s)+1到10exp(p-s)-1。精度必须是从1到最大精度之间的值。最大精度为38。缺省值为18. ・ s(小数位数): 指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 p 之间的值,因而 0 <= s <= p。缺省值为0。 Numeric型数据的存储空间随精度的不同而不同。如表4-2所示。 表 4-2
例如:定义numeric(9,7),则整数部分取值范围从-10exp(9-7)+1到10exp(9-7)-1,即-99到99。小数部分为七位。 在实际插入数据的时候,当整数部分超过取值范围的时候,则无法插入数据。而小数部分超过相应的位数,则将超出的尾数进行四舍五入。在进行四舍五入运算后,如果转化的整数部分超过取值范围,一样无法插入,这一点应当注意。 6. 二进制数据类型: 二进制数据类型是用十六进制来表示的数据,SQL Server中使用固定长度的binary和可变长度的varbinary来存储二进制数据。 binary (n) :固定长度的n个字节二进制数据。N必须从1到8,000。存储空间大小为 n+4 字节。 varbinary(n): n个字节变长二进制数据。n必须从1到8,000。存储空间大小为实际输入数据长度+4个字节,而不是n个字节。输入的数据长度可能为0字节。 在进行插入数据的时候注意,对binary的数据插入的时候,数据总是先从右到左进行计算,然后在多余的字节上进行填充,所以在插入的位数为奇数的时候,首先在数字前面加0,然后再在后面补0。 例如:设置binary(5),插入0Xaabbccdd,则实际插入显示为0Xaabbccdd00(在后面补0)。而插入0Xabbccddee,则实际插入显示0X0abbccddee。(先在数字前面加0) 还有,插入数据后显示的数字和实际插入的数字看来不一样,但在数据库中存储的值和实际插入的数字是一样的。例如刚刚上面插入0Xaabbccdd,而显示插入0Xaabbccdd00,实际上数据库中存放的是0Xaabbccdd,而不是真正的0Xaabbccdd00。 7. 其他数据类型 其余的数据类型,包括money,smallmoney的货币数据类型;为了方便存储和使用文本、图像等大型数据的text,ntext,image数据类型。以及可以存储除了text,ntext,image之外所有数据类型的sql-variant数据类型;还有table数据类型,一般应用于编程环境,就像一个临时的表格,储存数据库里面的结果数据集;用户也可以根据自己的需要定制用户自定义数据类型。 |