Oracle只是在语法上支持decimal类型,但是在底层实际上它就是number类型,支持decimal类型是为了能把数据从Oracle数据库移到其他

一、DECIMAL类型详细

Oracle只是在语法上支持decimal类型,但是在底层实际上它就是number类型,支持decimal类型是为了能把数据从Oracle数据库移到其他数据库中(如DB2等)。

因为decimal在Oracle底层就是number类型,所以就当number类型使用就可以了,如果需要对这种字段类型转为char类型可以用to_char函数对其转换。

decimal类型从根本上说应该是数字类型的,因为oracle内部的数据类型,对于数字只有number类型,都当数字类型进行处理即可。decimal(8,2)代表数字总共8位长度,小数部分是2位。范围是8位,精确到小数点后2位,并四舍五入,即存6位整数,两位小数。也就是最大值可以是999999.99,可存放2位小数。Oracle中,可以使用to_char函数对数字进行转换,使它变成字符类型.

二、NUMBER类型详细

在Oracle中Number类型可以用来存储0,正负定点或者浮点数,可表示的数据范围在

1.0 * 10(-130) —— 9.9...9 * 10(125) {38个9后边带88个0}

的数字,当Oracle中的数学表达式的值>=1.0*10(126)时,Oracle就会报错。

Number的数据声明如下:

表示

作用

说明

Number(p, s)

声明一个定点数

p(precision)为精度,s(scale)表示小数点右边的数字个数,精度最大值为38,,scale的取值范围为-84到127

Number(p)

声明一个整数

相当于Number(p, 0)

Number

声明一个浮点数

其精度为38,要注意的是scale的值没有应用,也就是说scale的指不能简单的理解为0,或者其他的数。

定点数的精度(p)和刻度(s)遵循以下规则:

当一个数的整数部分的长度> p-s 时,Oracle就会报错

当一个数的小数部分的长度> s 时,Oracle就会舍入。

当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。

当s > p时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入.

NUMBER类型细讲

Oracle number datatype 语法:NUMBER[(precision [, scale])]

简称:precision --> p

scale --> s

NUMBER(p, s)

范围:1 <= p <=38, -84 <= s <= 127

保存数据范围:-1.0e-130 <= number value < 1.0e+126

保存在机器内部的范围:1 ~ 22 bytes

有效位:从左边第一个不为0的数算起的位数。

s的情况:

s > 0

精确到小数点右边s位,并四舍五入。然后检验有效位是否<= p。

s < 0

精确到小数点左边s位,并四舍五入。然后检验有效位是否<= p + |s|。

s = 0

此时NUMBER表示整数。

eg:

Actual Data Specified As Stored As

----------------------------------------

123.89 NUMBER 123.89

123.89 NUMBER(3) 124

123.89 NUMBER(6,2) 123.89

123.89 NUMBER(6,1) 123.9

123.89 NUMBER(4,2) exceeds precision (有效位为5, 5 > 4)

123.89 NUMBER(6,-2) 100

.01234 NUMBER(4,5) .01234 (有效位为4)

.00012 NUMBER(4,5) .00012

.000127 NUMBER(4,5) .00013

.0000012 NUMBER(2,7) .0000012

.00000123 NUMBER(2,7) .0000012

1.2e-4 NUMBER(2,5) 0.00012

1.2e-5 NUMBER(2,5) 0.00001

123.2564 NUMBER 123.2564

1234.9876 NUMBER(6,2) 1234.99

12345.12345 NUMBER(6,2) Error (有效位为5+2 > 6)

1234.9876 NUMBER(6) 1235 (s没有表示s=0)

12345.345 NUMBER(5,-2) 12300

1234567 NUMBER(5,-2) 1234600

12345678 NUMBER(5,-2) Error (有效位为8 > 7)

123456789 NUMBER(5,-4) 123460000

1234567890 NUMBER(5,-4) Error (有效位为10 > 9)

12345.58 NUMBER(*, 1) 12345.6

0.1 NUMBER(4,5) Error (0.10000, 有效位为5 > 4)

0.01234567 NUMBER(4,5) 0.01235

0.09999 NUMBER(4,5) 0.09999

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql number decimal_Oracle中的decimal与Number区别相关推荐

  1. MySql 连接查询中 on 和 where 的区别

    大家可以先看MySQL:left join 避坑指南 看过之后再接着看下面 在多表查询时,ON和where都表示筛选条件,on先执行,where后执行. on 后跟连接条件,然后再加的筛选条件只针对关 ...

  2. mysql存储引擎中INNODB和MyISAM的区别

    切记:存储引擎是基于表的,而不是数据库. 存储引擎概念: MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不 ...

  3. MySQL存储引擎中的MyISAM和InnoDB区别详解

    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...

  4. mysql show timestamp_mysql中 datatime与timestamp的区别说明

    mysql中有三种日期类型: date(年-月-日) create table test(hiredate date); datetime(日期时间类型) create table test(hire ...

  5. Mysql存储引擎中InnoDB与Myisam的区别

    为什么80%的码农都做不了架构师?>>>    1. 事务处理 innodb 支持事务功能,myisam 不支持. Myisam 的执行速度更快,性能更好. 2. select ,u ...

  6. mysql int number_Oracle/MySQL decimal/int/number 转字符串

    有时客户需要流水数据,当导出为excel的时候,客户编号等很长数字的栏位,被excel变成科学记数法,无法正常查看. 因此,需要将Oracle/MySQL中的decimal/int 转 varchar ...

  7. Oracle/MySQL decimal/int/number 转字符串

    有时客户需要流水数据,当导出为excel的时候,客户编号等很长数字的栏位,被excel变成科学记数法,无法正常查看. 因此,需要将Oracle/MySQL中的decimal/int 转 varchar ...

  8. html文档 字符引用,【转】HTML中常见形如#number;的东西叫做 字符实体引用,简称引用,代表一个对应的unicode字符...

    [转]HTML中常见形如number;的东西叫做 字符实体引用,简称引用,代表一个对应的unicode字符 英文解释的很清楚,就不翻译了,自己看: Entities Character entity ...

  9. Character n is neither a decimal digit number, decimal point, nor “e“ notation exponential mark.

    功能开发中出现一个诡异的异常信息,信息如下 2021-09-27 13:44:57.487 [http-nio-5020-exec-1] ERROR o.a.catalina.core.Contain ...

  10. Mplus中出现‘NO CONVERGENCE. NUMBER OF ITERATIONS EXCEEDED’

    用Mplus分析数据的时候,在输出的output中出现'NO CONVERGENCE.  NUMBER OF ITERATIONS EXCEEDED.'的警告 今天刚好翻到凸优化中讲解'范数逼近中野值 ...

最新文章

  1. CBWFQ技术简介及应用配置事例
  2. python画柱状图和折线图-Python数据可视化–折线图–柱状图
  3. vue-router之路由属性配置说明(十)
  4. JSP知识点大致介绍1
  5. 免费直播:1 小时带你体验 Python 车牌识别实战
  6. JDBC中数据库连接池的使用与传统方式的比较
  7. eclipse中编译java_eclipse编译java文件
  8. linux最大lun空间,Linux上每个SCSI设备的最大LUN数目是多少(by quqi99)
  9. matlab的四个取整函数!
  10. 计算机屏保后无法进入登录界面,Win10锁屏界面无法登录卡在登录状态的应对办法...
  11. 新疆维吾尔自治区坡度数据
  12. 高德地图怎么画圈_点标记-覆盖物-教程-地图 JS API | 高德地图API
  13. 2021.08.09【普及组】模拟赛C组比赛总结
  14. Linux下service mysqld start 启动MySQL提示Redirecting to /bin/systemctl start mysqld.servic
  15. java多线程JUC学习笔记
  16. 趣玩 Linux:盘点那些能装逼的炫酷命令(动图演示)
  17. 作业练习2:类与数据结构
  18. php laravel入口文件,Laravel 应用的入口:路由系列之基础入门篇
  19. 世界最昂贵的十大军用飞机
  20. C语言经典题10道之古典问题: 兔子生兔问题

热门文章

  1. Centos硬盘IO性能检测命令iostat[转]
  2. WebMvcConfigurerAdapter
  3. linux-SSH远程服务的管理操作,查看虚拟机信息
  4. PHP关于错误抑制符@的使用
  5. 【转】使用红雪越狱iPhone 4.3.3教程
  6. [HAOI2006]聪明的猴子
  7. Eclipse无法查看Servlet源代码的解决方案
  8. linux一步一脚印--- ls -l 命令执行显示结果的每一列含义
  9. 消息队列一:为什么需要消息队列(MQ)?
  10. day6 break continue for