机房收费系统走到计算卡余额的时候,遇到了有关除法运算符和sql2008中的数据类型的问题。下面是关于这两方面的认识,希望大神们指导下,不胜感激。
浮点型数据包括整数部分和小数部分。常用类型有numeric和decimal,这两者的存储长度和其精度有关。需要指出的是,浮点型数据需要指出整数部分和小数部分各自的精度即各占几位。例如numeric(8,6)表示该小数为8位,有6位小数。注意:小数的位数可以指定为0即表示整数。
显而易见的,货币型数据是用来表示货币数据的。其成员按照范围由大到小有smallmoney和money,它们分别以4字节和8字节为一存储单元进行存储。smallmoney的范围为从-214748.3648到214748.3647;money的范围为-922337203685477.5808到922337203685477.5807(大家心里对这两位的范围有个大概印象即可啦)。
同样,这一数据类型使用来储存日期和时间的数据的。这一数据类型包括的类型到目前为止有六种:datetime、smalldatetime、datetime2、datetimeoffset、date和time。其中最先出现的datetime和smalldatetime是用来存储日期和时间混合的数据的,区别只是范围的大小不同;而存储日期和时间混合类型数据的新秀datetime2在精度上比前两者有所提高,其精度小于3时为6字节,精度为4时和5时时为7字节,所有其他时为8字节;至于datetimeoffset是用来存储日期、时间和时区信息的数据类型,默认精度为10字节的固定大小;date用来单一存储日期,time则用来单一存储表示时间的数据。
大家看到这个运算符可能会有一种亲切感,毕竟数学中相识相知了很多年嘛。对于该运算符支持的数据类型,微软官方解释为“支持Numeric类型,包括无符号和浮点类型以及Decimal类型”。
对于这一解释我有一种很不好滴赶脚:Numeric和Decimal不就代表了所有的数值型数据了吗?为什么不直接说支持所有数据类型呢?各位神仙哪位大神可以告诉我为什么啊?
关于这个运算符,相信大家虽然没有遇到“/”的熟悉感,但不至于完全陌生。作为取余运算,Mod同样支持所有数据类型。而在处理浮点型数据的取余运算时,返回的余数可以为浮点型数值。
一、数据类型
首先我们来看下sql2008的数据类型的相关内容。说道数据类型,相信学过编程的同学一定不陌生了。对于任何一种编程语言,数据类型无不占据着基石的重要地位。任何一种语言,如果在数据类型上不下功夫总是会有瑕疵的。而sql在这方面一样是下了一番功夫。
1、字符型数据
字符型数据是数据库中最常用的一种数据类型了,字符型数据需要放在单引号 ' ' 中。字符型数据有其长度,每个英文字母(不分大小写)和每个阿拉伯数字各占一个长度;而我们母语中的每个汉字则各占两个字符长度(关于这点,有兴趣的伙伴们可以自行搜索一下)。
字符串家族的成员有:char(字符串长度)、varchar(字符串长度)和text。这里我主要向大家介绍其中的char()是固定长度类型,例如char(8)表示最多存储8个字符串长度的字符串,字符串长度不够8个的按8个计算,剩下的字符用空格补齐;而varchar()则是可变长度类型,若定义数据类型为varchar(8)而所要存储的字符串长度不到8,则按实际字符串长度计算。例如定义数据类型为varchar(8)但是实际字符串长度为6,则字符串长度就是6而不是8。至于text则是用来存储大量字符的,其最大存储长度约为21E个字符。
2、数值型数据类型
数值型数据类型数据包括我们通常所说的0~9的数字、正负符号和小说点组成。关于小数点我们需要注意的是,带小数点的为浮点型数据,不带小数点的为整数型数据。sql2008则为我们提供了整数型数据、浮点型数据和货币型数据。
- 整数型数据@H_404_53@
整数型数据按照范围大小又细分为:bit光棍和int家族:tinyint、smallint、int、bigint。其中的bit包括0、1和NULL,不满8bit的按8bit计算;tinynit的范围为0~255、smallnit的范围为-2^15~2^15-1、int的范围为-2^31-2^31-1、bigint的范围为-2^63~2^63-1。(关于范围,大家不必记得完全正确,有个大概范围就可以了)
- 浮点型数据@H_404_53@
浮点型数据包括整数部分和小数部分。常用类型有numeric和decimal,这两者的存储长度和其精度有关。需要指出的是,浮点型数据需要指出整数部分和小数部分各自的精度即各占几位。例如numeric(8,6)表示该小数为8位,有6位小数。注意:小数的位数可以指定为0即表示整数。
- 货币型数据@H_404_53@
显而易见的,货币型数据是用来表示货币数据的。其成员按照范围由大到小有smallmoney和money,它们分别以4字节和8字节为一存储单元进行存储。smallmoney的范围为从-214748.3648到214748.3647;money的范围为-922337203685477.5808到922337203685477.5807(大家心里对这两位的范围有个大概印象即可啦)。
- 日期和时间型数据@H_404_53@
同样,这一数据类型使用来储存日期和时间的数据的。这一数据类型包括的类型到目前为止有六种:datetime、smalldatetime、datetime2、datetimeoffset、date和time。其中最先出现的datetime和smalldatetime是用来存储日期和时间混合的数据的,区别只是范围的大小不同;而存储日期和时间混合类型数据的新秀datetime2在精度上比前两者有所提高,其精度小于3时为6字节,精度为4时和5时时为7字节,所有其他时为8字节;至于datetimeoffset是用来存储日期、时间和时区信息的数据类型,默认精度为10字节的固定大小;date用来单一存储日期,time则用来单一存储表示时间的数据。
二、除法运算符
VB提供了“\”、“/”和“Mod”这三种除法运算符。具体情况我们看下面的详解。
- “/”运算符@H_404_53@
大家看到这个运算符可能会有一种亲切感,毕竟数学中相识相知了很多年嘛。对于该运算符支持的数据类型,微软官方解释为“支持Numeric类型,包括无符号和浮点类型以及Decimal类型”。
对于这一解释我有一种很不好滴赶脚:Numeric和Decimal不就代表了所有的数值型数据了吗?为什么不直接说支持所有数据类型呢?各位神仙哪位大神可以告诉我为什么啊?
- “Mod”运算符@H_404_53@
关于这个运算符,相信大家虽然没有遇到“/”的熟悉感,但不至于完全陌生。作为取余运算,Mod同样支持所有数据类型。而在处理浮点型数据的取余运算时,返回的余数可以为浮点型数值。
写到这里,我自己对sql中的数据类型以及VB提供的有关除法的运算符的理解就暂时告一段落了。如有不当之处,敬请您的不吝赐教。
感谢您的宝贵时间,谢谢~