https://www.cnblogs.com/oumyye/p/4448656.html

NUMBER ( precision, scale)

  1. precision表示数字中的有效位;如果没有指定precision的话,Oracle将使用38作为精度。
  2. 如果scale大于零,表示数字精确到小数点右边的位数;scale默认设置为0;如果scale小于零,Oracle将把该数字取舍到小数点左边的指定位数。
  3. Precision的取值范围为 [1---38];Scale的取值范围为 [-84---127]。
  4. NUMBER整数部分允许的长度为(precision- scale),无论scale是正数还是负数。
  5. 如果precision小于scale,表示存储的是没有整数的小数。
  6. Precision表示有效位数,有效数位:从左边第一个不为0的数算起,小数点和负号不计入有效位数;scale表示精确到多少位,指精确到小数点左边或右边多少位(+-决定)。
  7. NUMBER类型数值举例
 实际数值 数据类型   存储值
 1234567.89  number 1234567.89 
 1234567.89  number(8) 1234567 
 1234567.89 number(6)  出错 
 1234567.89  number(9,1) 1234567.9 
 1234567.89   number(9,3)   出错
 1234567.89  number(7,2) 出错 
 1234567.89   number(5,-2)  1234600 
 1234511.89  number(5,-2) 1234500 
 1234567.89 number(5,-4)  1230000 
 1234567.89  number(*,1) 1234567.9 
 0.012 number(2,3)  0.012 
0.23 number(2,3)  出错 

8. 关于precision, scale也可以作如下表述

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

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

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

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

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

    与int的区别

    oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集。
    int类型只能存储整数;
    number可以存储浮点数,也可以存储整数;
    number(8,1)存储小数位为1位,总长度为8的浮点数,如果小数位数不足,则用0补全;
    number(8)存储总长度为8的整数;
    int相当于number(22),存储总长度为22的整数。

    NUMBER类型的子类

    a)  oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集。

    b)  int类型只能存储整数;number可以存储浮点数,也可以存储整数。

    c)  在oracle数据库建表的时候,decimal,numeric不带精度,oracle会自动把它处理成INTEGER;带精度,oracle会自动把它处理成number。

    d)  Oracle只用NUMBER(m,n)就可以表示任何复杂的数字数据。

    e)  decimal,numeric,int等都为SQL、DB2等数据库的数据类型,ORACLE为了兼容才将其引入;但实际上在ORACLE内部还是以NUMBER的形式将其存入。

NUMBER设置主键自增

不同于mysql可以直接设置自增,需要建立序列,和触发器。例:

先建张表

然后,自定义一个序列(sequence)

CREATE SEQUENCE  test_sequence

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

NOMAXVALUE -- 不设置最大值

NOCYCLE -- 一直累加,不循环

NOCACHE -- 不建缓冲区

再创建一个触发器

CREATE OR REPLACE TRIGGER test_trigger
BEFORE INSERT ON test
FOR EACH ROW
BEGIN
SELECT test_sequence.nextval INTO :new.id FROM dual;
END;

插入数据进行测试

结果是这样,即使你在插入的时候指定了id的值,但实际id还是自增后的值,我的版本是11g,不知道人家的博客为什么结果都是手动指定的id值???

Oracle的number数据类型的更多相关文章

  1. 【转】oracle数据库NUMBER数据类型

    原文:http://www.jb51.net/article/37633.htm NUMBER ( precision, scale)a)  precision表示数字中的有效位;如果没有指定prec ...

  2. oracle 的number数据类型

    NUMBER类型细讲:Oracle number datatype 语法:NUMBER[(precision [, scale])]简称:precision --> p      scale   ...

  3. oracle中number数据类型简单明了解释

    NUMBER (p,s) p和s范围: p 1-38 s -84-127 number(p,s),s大于0,表示有效位最大为p,小数位最多为s,小数点右边s位置开始四舍五入,若s>p,小数点右侧 ...

  4. Oracle存储过程-自定义数据类型,集合,遍历取值

    摘要 Oracle存储过程,自定义数据类型,集合,遍历取值 目录[-] 0.前言 1.Packages 2.Packages bodies 3.输出结果 0.前言 在Oracle的存储过程中,可能会遇 ...

  5. Oracle中的数据类型和数据类型之间的转换

    Oracle中的数据类型 /* ORACLE 中的数据类型: char 长度固定 范围:1-2000 VARCHAR2 长度可变 范围:1-4000 LONG 长度可变 最大的范围2gb 长字符类型 ...

  6. Oracle数据库之数据类型

    Oracle数据库之数据类型 Oracle基本数据类型(亦叫内置数据类型,internal datatypes或built-in datatypes)可以按类型分为:字符串类型.数字类型.日期类型.L ...

  7. Oracle VS DB2 数据类型

    =========================Oracle VS DB2==================================== 本文转自:http://www.bitscn.co ...

  8. MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解

    本文转自:http://blog.csdn.net/loongshawn/article/details/50496460 1. Mybatis JdbcType与Oracle.MySql数据类型对应 ...

  9. Mybatis JdbcType与Oracle、MySql数据类型对应列表

    1. Mybatis JdbcType与Oracle.MySql数据类型对应列表 Mybatis JdbcType Oracle MySql JdbcType ARRAY     JdbcType B ...

随机推荐

  1. PowerPC-object与elf中的符号引用

    https://mp.weixin.qq.com/s/6snzjEpDT4uQuCI2Nx9VcQ   一. 符号引用 编译会先把每个源代码文件编译成object目标文件,然后把所有目标文件链接到一起 ...

  2. Chisel3 - Tutorial - VendingMachineSwitch

    https://mp.weixin.qq.com/s/5lcMkenM2zTy-pYOXfRjyA   演示如何使用switch/is来实现状态机.   参考链接: https://github.co ...

  3. Java实现 LeetCode 736 Lisp 语法解析(递归)

    736. Lisp 语法解析 给定一个类似 Lisp 语句的表达式 expression,求出其计算结果. 表达式语法如下所示: 表达式可以为整数,let 语法,add 语法,mult 语法,或赋值的 ...

  4. Java实现 LeetCode 203 移除链表元素

    203. 移除链表元素 删除链表中等于给定值 val 的所有节点. 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2 ...

  5. Java实现 蓝桥杯VIP 算法提高 铺地毯

    算法提高 铺地毯 时间限制:1.0s 内存限制:256.0MB 问题描述 为了准备一个学生节,组织者在会场的一片矩形区域(可看做是平面直角坐标 系的第一象限)铺上一些矩形地毯.一共有n 张地毯,编号从 ...

  6. StringBuilder的线程为什么不安全

    StringBuffer和StringBuilder的区别在哪里? StringBuffer是线程安全的,StringBuilder是线程不安全的. 那么StringBuilder不安全在哪里?在想这 ...

  7. java实现 蓝桥杯 算法训练 Password Suspects

    问题描述 在年轻的时候,我们故事中的英雄--国王 Copa--他的私人数据并不是完全安全地隐蔽.对他来说是,这不可接受的.因此,他发明了一种密码,好记又难以破解.后来,他才知道这种密码是一个长度为奇数 ...

  8. java实现欧拉与鸡蛋

    ** 欧拉与鸡蛋** 大数学家欧拉在集市上遇到了本村的两个农妇,每人跨着个空篮子.她们和欧拉打招呼说两人刚刚卖完了所有的鸡蛋. 欧拉随便问:"卖了多少鸡蛋呢?" 不料一个说:&qu ...

  9. [原创][开源] SunnyUI.Net 字体图标

    SunnyUI.Net, 基于 C# .Net WinForm 开源控件库.工具类库.扩展类库.多页面开发框架 Blog: https://www.cnblogs.com/yhuse Gitee: h ...

  10. .net core3.1 abp动态菜单和动态权限(动态菜单实现和动态权限添加) (三)

    我们来创建动态菜单吧 首先,先对动态菜单的概念.操作.流程进行约束:1.Host和各个Tenant有自己的自定义菜单2.Host和各个Tenant的权限与自定义菜单相关联2.Tenant有一套默认的菜 ...