转载自初一七月Oracle数据类型之number

oracle的number类型是oracle的内置类型之一,是oracle的最基础数值数据类型。在9iR2及其以前的版本中只支持一种适合存储数值数据的固有数据类型,在10g以后,才出现了两种新的数值类型,即推出本地浮点数据类型(Native Floating-Point Data Types): BINARY_FLOAT(单精度32位)和BINARY_DOUBLE(双精度64位). 这些新数据类型都是基于IEEE二进制浮点运算标准,ANSI/IEEE Std 754-1985 [IEEE 754],使用这些类型时要加上文字f(BINARY_FLOAT)或者d(BINARY_DOUBLE),比如2.07f、3.000094d。

number数据类型

number类型的语法很简单:number(p,s):
p:精度位,precision,是总有效数据位数,取值范围是38,默认是38,可以用字符*表示38。
s:小数位,scale,是小数点右边的位数,取值范围是-84~127,默认值取决于p,如果没有指定p,那么s是最大范围,如果指定了p,那么s=0。
p:is the precision,or the total number of digits. Oracle guarantees the portability of numbers with precision ranging from 1 to 38.
s:is the scale, or the number of digits to the right of the decimal point. The scale can range from -84 to 127.

number类型的p和s,与其底层存储完全没有关系,根本不会影响数据在磁盘上如何存储,它只会影响允许哪些值以及数值如何舍入,你可以认为其是对数据的“编辑”。简单的说,精度位p表示数值最多能有多少个有效数字,而小数位s表示最多能有多少位小数。换句话说,p表示一共有多少位有效数字(即小数点左边最多有p-s位有效数字),s表示小数点右边有s位有效数字。如number(5,2)类型的数据,就表示小数点左边最多有3位有效数字,右边最多有2位有效数字,加起来就是最多有5位有效数字,超过这个范围的数字就不能正确的存储下来,注意这里说的是不能正确存储,但并不是不能存储。

最高整数位数=p-s
s正数,小数点右边指定位置开始四舍五入
s负数,小数点左边指定位置开始四舍五入
s是0或者未指定,四舍五入到最近整数
当p小于s时候,表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p位必须是0,保留s位小数。

p>0,对s分2种情况:

  1. s>0
    精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。
  2. s<0
    精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|

具体数据可参考下表

里面发生错误的行有的是因为源数据超过了可以表示的范围,有的是因为进行小数四舍五入后超过了可以表示的范围。

Oracle数据库存储number类型数据相关推荐

  1. python连接oracle数据库 插入clob类型数据

    python连接oracle数据库 插入clob类型数据 连接数据库 import cx_Oracle as cx #导入模块 con = cx.connect('root', 'root123', ...

  2. Oracle数据库中number类型在hibernate的引用

    1)如果不指定number的长度,或指定长度n>18 id number not null,转换为pojo类时,为java.math.BigDecimal类型 2)如果number的长度在10 ...

  3. oracle 数据立方_关于在Oracle 数据库存储m³(立方米)

    --------------注意:如下操作是在RHEL的VNC中执行的,并不是在secureCRT中执行的.------------ --------------原因:若是在secureCRT执行,m ...

  4. oracle表的常见字段类型有哪些,Oracle数据库的字段类型

    字 段 类 型 CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749 NCHAR 根据字符集而定的固定长度 ...

  5. oracle利用游标添加数据库,Oracle数据库游标的类型及使用实例全解

    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.Oracle数据库的Cursor类型包含三种: 静态游标:分为显式(explicit)游标 ...

  6. oracle sql 导入mysql数据库备份_使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复...

    使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复 这种操作百度一搜一大片,今天整理以前做的项目时自己备份了一下数据库,试着将数据进行导出备份和导入恢复了一下:下面是操作过程: 1 ...

  7. mysql java datetime_Java向mysql数据库插入datetime类型数据实例(精)

    在Mysql数据库中日期跟时间有两种: 1.date类型,date类型也就是我们常见的储存yyyy-MM-dd类型的日期,它不能储存时间,也就是只能储存日期, 2.dateitme就是可以储存日期同时 ...

  8. oracle 数据 导出 excel 自动分多个文件,从oracle数据库中导出大量数据到excel中为什么自动分成了好几个excel文件《excel表格新手入门》...

    EXCEL中一个单元格中多行文本如何导入或复制到SQL SERVER 数据库表中? 保留换行符保存进数据表啊,读取出来显示的时候根据需要进行转换就行了,比如要在网页上显示,可以把换行符转换成HTML的 ...

  9. mysql存储number_DUMP函数--Oracle是如何在内部存储NUMBER类型的数据?

    Oracle在数据库内部通过相应的算法转换来进行数据存储,本文旨在介绍NUMBER类型的值是如何被存储的.先看一个简单的示例:SQLgt Oracle在数据库内部通过相应的算法转换来进行数据存储,本文 ...

  10. oracle数据库存储结构语句,oracle之物理数据库结构描述

    oracle之物理数据库结构概述 oracle的物理结构其实是由各种各样的文件组成的, 其中与数据库相关的有: 数据文件(data file):这些文件是数据库的主要文件:其中包括数据表.索引和所有其 ...

最新文章

  1. 两个月番茄组长的收获总结
  2. index.php user r,安装cms :在浏览器中打开http://你的网址/install/index.php 出现白屏怎样处理?...
  3. java中字符串分割器_java简易文本分割器实现代码
  4. HBase存储相关概念
  5. cocos2d js调用java_【cocos2d-js官方文档】二十四、如何在android平台上使用js直接调用Java方法...
  6. 计算机二级c选择题题库,C程序设计选择题题库【2018计算机二级考试题库:《C++》选择题练习】...
  7. .NET 6 中哈希算法的简化用法
  8. 《Office 365开发入门指南》上市说明和读者服务
  9. java中事件的概念,事件中心上IoTHub数据的概念
  10. python多态(一分钟读懂)
  11. CentOS7虚拟机克隆,且成功互ping
  12. 音乐网站源码:Spring Boot + MyBatis + Vue 实现的
  13. python 函数调用问题
  14. 虚拟服务器忘记密码,win7系统下VMware虚拟机忘记开机密码的解决方法
  15. 微光集市-商品及其商品信息的显示(版本1.0)
  16. 论如何写一份好的前端面试简历
  17. matlab 如何axis,在matlab中axis是什么意思,matlab中axis的用法
  18. 化合物筛选“杀手锏”:高质量化合物库+一站式虚拟筛选,这里都备齐了
  19. 亚马逊美国站服装类目需要审核怎么办?亚马逊美国站服装好做吗?
  20. 中小学教师资格考试介绍

热门文章

  1. 用eviews做svar模型_SVAR模型制作过程
  2. 微信缓存css怎么清理,前端清除缓存方法(微信缓存引起的bug)
  3. VMware之虚拟交换机
  4. 【SpringBoot】62、SpringBoot中接入xxl-job实现分布式任务调度
  5. cad没有命令输入框_cad怎么调出命令栏(cad下面的命令行没有了,如何调出来?)...
  6. 计算机绘画社团活动教案,电脑绘画社团教案
  7. 图片免费压缩——在线压缩JPG方法分享
  8. 基于ttcrpy的跨孔CT高斯牛顿算法及python代码分享(2)
  9. 使用SpringBoot完成RabbitMQ与Dubbo框架集成例程
  10. 阿里云服务器实现内网互通