机房收费系统之数据类型&除法运算符

机房收费系统走到计算卡余额的时候,遇到了有关除法运算符和SQL2008中的数据类型的问题。下面是关于这两方面的认识,希望大神们指导下,不胜感激。

一、数据类型

首先我们来看下SQL2008的数据类型的相关内容。说道数据类型,相信学过编程的同学一定不陌生了。对于任何一种编程语言,数据类型无不占据着基石的重要地位。任何一种语言,如果在数据类型上不下功夫总是会有瑕疵的。而SQL在这方面一样是下了一番功夫。

关于数据类型,SQL2008提供了普遍存在的几种数据类型:字符型、数值型、日期和时间型( 这三种比较常用)以及其它一些特殊的数据类型( 不常用的和自定义的等数据类型,但一样重要)。

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则为我们提供了整数型数据、浮点型数据和货币型数据。

  • 整数型数据

整数型数据按照范围大小又细分为: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。(关于范围,大家不必记得完全正确,有个大概范围就可以了)

  • 浮点型数据

浮点型数据包括整数部分和小数部分。常用类型有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则用来单一存储表示时间的数据。

二、除法运算符

VB提供了“\”、“/”和“Mod”这三种除法运算符。具体情况我们看下面的详解。

  • “\”运算符

对于这个“\”运算符,微软官方称之为“截断”,个人更愿意称其功能为“取整”。该运算符支持所有数值类型。

  • “/”运算符

大家看到这个运算符可能会有一种亲切感,毕竟数学中相识相知了很多年嘛。对于该运算符支持的数据类型,微软官方解释为“支持Numeric类型,包括无符号和浮点类型以及Decimal类型”。 对于这一解释我有一种很不好滴赶脚:Numeric和Decimal不就代表了所有的数值型数据了吗?为什么不直接说支持所有数据类型呢?各位神仙哪位大神可以告诉我为什么啊?

  • “Mod”运算符

关于这个运算符,相信大家虽然没有遇到“/”的熟悉感,但不至于完全陌生。作为取余运算,Mod同样支持所有数据类型。而在处理浮点型数据的取余运算时,返回的余数可以为浮点型数值。
写到这里,我自己对SQL中的数据类型以及VB提供的有关除法的运算符的理解就暂时告一段落了。如有不当之处,敬请您的不吝赐教。
感谢您的宝贵时间,谢谢~

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr
今天碰到一个问题,登陆的时候,如果不需要验证手机号为空,则不去验证手机号 因为登陆的时候所有的验证信息都存放在一个数组里 Dim CheckUserInfo() As String ={UserBirthday, SecEmail, UserMob, UserSex, RealNameFirst, RealName, CheckCardID, CheckCardType, Contactemail
在VB6.0中,数据访问接口有三种: 1、ActiveX数据对象(ADO) 2、远程数据对象(RDO) 3、数据访问对象(DAO) 1.使用ADO(ActiveX Data Objec,ActiveX数据对象)连接SQL Server 1)使用ADO控件连接 使用ADO控件的ConnectionString属性就可以连接SQL Server,该属性包含一个由分号分隔的argument=value语
注:大家如果没有VB6.0的安装文件,可自行百度一下下载,一般文件大小在200M左右的均为完整版的软件,可以使用。   特别提示:安装此软件的时候最好退出360杀毒软件(包括360安全卫士,电脑管家等,如果电脑上有这些软件的话),因为现如今的360杀毒软件直接会对VB6.0软件误报,这样的话就可能会在安装过程中被误报阻止而导致安装失败,或者是安装后缺乏很多必须的组件(其它的杀毒软件或安全卫士之类的
Private Sub Form_Load() Call conndb End Sub Private Function conndb() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strCn, sql As String Dim db_host As String Dim db_user As String
  PPSM06S70:  Add  moddate  EDITSPRINTJOB:  MAX(TO_CHAR(ETRN.MODDATE, ‘yyyy/mm/dd/HH24:MI AM‘)) ACTUAL_SHIPDATE   4.Test Scenario (1) :Query SQL Test DN:8016578337 SELECT CTRN.TKCTID TRUCK_ID,        
  沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.config, <startup >改成<startup useLegacyV2RuntimeActivationPolicy ="true">  CrystalReport1.rpt增加數據庫專家 在表單
Imports System.Threading Imports System Public Class Form1 Dim th1, th2 As Thread Public Sub Method1() Dim i As Integer For i = 1 To 100 If Me.Label1.BackColor =
Friend Const PROCESS_ALL_ACCESS = &H1F0FFF = 2035711 Friend Const PROCESS_VM_READ = &H10 Friend Const PROCESS_VM_WRITE = &H20 Friend Const PAGE_READONLY = &H2 Friend Const PAGE_READWRITE = &H4 Friend
以下代码随手写的 并没有大量测试 效率也有待提升 如果需要C#的请自行转换 Function SplitBytes(Data As Byte(), Delimiter As Byte()) As List(Of Byte()) Dim i = 0 Dim List As New List(Of Byte()) Dim bytes As New
Imports System.Data.SqlClient Public Class Form1 REM Public conn1 As SqlConnection = New SqlConnection("server=.; Integrated Security=False;Initial Catalog= mydatabase1; User ID= sa;password")