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. Spring Boot笔记(七) springboot 集成 JavaMail 实现邮箱认证

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.JavaMail 1.什么是JavaMail? JavaMail,顾名思义,提供给开发者处理 电子邮 ...

  2. Java实现蓝桥杯VIP 算法训练 P0504

    试题 算法训练 P0504 资源限制 时间限制:1.0s 内存限制:256.0MB Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的 ...

  3. Java实现 蓝桥杯VIP 算法提高 Quadratic Equation

    算法提高 Quadratic Equation 时间限制:1.0s 内存限制:512.0MB 问题描述 求解方程ax2+bx+c=0的根.要求a, b, c由用户输入,并且可以为任意实数. 输入格式: ...

  4. Java实现 LeetCode 46 全排列

    46. 全排列 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2] ...

  5. java实现报数游戏

    报数游戏 有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止.问剩下第几个孩子.下面的程序以10个孩子为例,模拟了这个过程,请完善之(提 ...

  6. Spring Data Jpa Specification 调用Oracle 函数/方法

    开发框架用的Jpa,数据库是 Oracle. 在开发中难免会遇到需要数据库字段是字符串格式,但是又需要对其进行范围查询(数据库设计问题,后续应避免).那么问题来了, Jpa Specification ...

  7. App接口设计之token的php实现

    为了保证移动端和服务端数据传输相对安全,需要对接口进行加密传输. 一.ttoken的设计目的:  因为APP端没有和PC端一样的session机制,所以无法判断用户是否登陆,以及无法保持用户状态,所以 ...

  8. [TopCoder]Seatfriends

    题目   点这里看题目. 分析   可以想到用 DP 解决.   由于把空位放到状态里面太麻烦了,因此我们单独将 " 组 " 提出来进行 DP .   \(f(i,j)\):前\( ...

  9. linux安装syncthing

    https://blog.csdn.net/weixin_30527551/article/details/98882344 https://syncthing.net/downloads/ http ...

  10. postman切换环境

    原文链接:https://www.cnblogs.com/nicole-zhang/p/11498384.html 通常会有多个测试环境,针对同一个接口来说,可能只是域名有变化,此时可以添加postm ...