===浮点数类型测试:float

===浮点数类型测试:float,第1张

作用:用于存储用户的身高、体重、薪水等

(浮点数和定点数都可以用类型名称后加(M,D)的方式来表示,

(M,D)表示一共显示M位数字(整数位+小数位),

其中D位于小数点后面,M和D又称为精度和标度。)

一、浮点数float类型测试

1、创建一个表

示例

mysql>create table test4(float_test float(5,2)) //一共5位,小数占2位

Query OK, 0 rows affected (0.00 sec)

2、查询表结构

示例:

mysql>desc test4

+------------+------------+------+-----+---------+-------+

| Field      | Type      | Null | Key | Default | Extra |

+------------+------------+------+-----+---------+-------+

| float_test | float(5,2) | YES  |    | NULL    |      |

+------------+------------+------+-----+---------+-------+

1 row in set (0.00 sec)

(float(5,2)

5是整数加小数的总长

,2是小数长度。

整数意味只有3位长度。)

3、插入合法数据

示例:

mysql>insert into test4 values (10.2), (70.243), (70.246)

Query OK, 3 rows affected (0.00 sec)

Records: 3  Duplicates: 0  Warnings: 0

4、查询表内容

示例:

mysql>select * from test4

+------------+

| float_test |

+------------+

|      10.20 |

|      70.24 |

|      70.25 |

+------------+

3 rows in set (0.00 sec)

5、插入非法数据

示例:

mysql>insert into test4 values (1111.2)

ERROR 1264 (22003): Out of range value for column 'float_test' at row 1

二、LAB2:(精准小数decimal)

定点数decimal类型测试:

(定点数在MySQL内部以字符串形式存储,比浮点数更精确,

适合用来表示货币等精度高的数据。

decimal在不指定精度时,默认的整数位为10,默认的小数位为0)

1、创建一个表

mysql>  create table test5(decimal_test decimal(5,2))

(总长度5位,小数占2位)

2、插入数据

示例:

mysql>insert into test5 values (70.245)

Query OK, 1 row affected, 1 warning (0.05 sec)

(注意有警告!!  超长部分不吉利,会四舍五入)

查看:mysql>  select * from test5

3、请思考如何创建整数9位,小数5位的数据类型

三、区别

三者区别介绍:

1、float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)

2、double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)

3、decimal:数字型,128bit,常用于银行帐目计算。(28个有效位)

不知道你是oracle还是sql server?这个是个自连接问题,先要排序,标行号,再同表的上下行相比,所以是自连接

orcale:

select a.vseq,a.declaredate as declaredate1,b.declaredate as declaredate2

from

(select vseq,declaredate,rownum as row from mac505 order by vseq,declaredate)a,

(select vseq,declaredate,rownum as row from mac505 order by vseq,declaredate)b

where a.vseq=b.vseq and a.row+1=b.row and a.declaredate+1000<b.declaredate

sql server由于只有2005以上版本才有row_number()函数,所以如下脚本只能用在2005以上版本中

select a.vseq,a.declaredate as declaredate1,b.declaredate as declaredate2

from

(select vseq,declaredate,row_number() orver (order by vseq,declaredate) as row from mac505 )a,

(select vseq,declaredate,row_number() orver (order by vseq,declaredate) as row from mac505 )b

where a.vseq=b.vseq and a.row+1=b.row and a.declaredate+1000<b.declaredate


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8706786.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存