Oracle的number数据类型
https://www.cnblogs.com/oumyye/p/4448656.html
NUMBER ( precision, scale)
- precision表示数字中的有效位;如果没有指定precision的话,Oracle将使用38作为精度。
- 如果scale大于零,表示数字精确到小数点右边的位数;scale默认设置为0;如果scale小于零,Oracle将把该数字取舍到小数点左边的指定位数。
- Precision的取值范围为 [1---38];Scale的取值范围为 [-84---127]。
- NUMBER整数部分允许的长度为(precision- scale),无论scale是正数还是负数。
- 如果precision小于scale,表示存储的是没有整数的小数。
- Precision表示有效位数,有效数位:从左边第一个不为0的数算起,小数点和负号不计入有效位数;scale表示精确到多少位,指精确到小数点左边或右边多少位(+-决定)。
- 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数据类型的更多相关文章
- 【转】oracle数据库NUMBER数据类型
原文:http://www.jb51.net/article/37633.htm NUMBER ( precision, scale)a) precision表示数字中的有效位;如果没有指定prec ...
- oracle 的number数据类型
NUMBER类型细讲:Oracle number datatype 语法:NUMBER[(precision [, scale])]简称:precision --> p scale ...
- oracle中number数据类型简单明了解释
NUMBER (p,s) p和s范围: p 1-38 s -84-127 number(p,s),s大于0,表示有效位最大为p,小数位最多为s,小数点右边s位置开始四舍五入,若s>p,小数点右侧 ...
- Oracle存储过程-自定义数据类型,集合,遍历取值
摘要 Oracle存储过程,自定义数据类型,集合,遍历取值 目录[-] 0.前言 1.Packages 2.Packages bodies 3.输出结果 0.前言 在Oracle的存储过程中,可能会遇 ...
- Oracle中的数据类型和数据类型之间的转换
Oracle中的数据类型 /* ORACLE 中的数据类型: char 长度固定 范围:1-2000 VARCHAR2 长度可变 范围:1-4000 LONG 长度可变 最大的范围2gb 长字符类型 ...
- Oracle数据库之数据类型
Oracle数据库之数据类型 Oracle基本数据类型(亦叫内置数据类型,internal datatypes或built-in datatypes)可以按类型分为:字符串类型.数字类型.日期类型.L ...
- Oracle VS DB2 数据类型
=========================Oracle VS DB2==================================== 本文转自:http://www.bitscn.co ...
- MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
本文转自:http://blog.csdn.net/loongshawn/article/details/50496460 1. Mybatis JdbcType与Oracle.MySql数据类型对应 ...
- Mybatis JdbcType与Oracle、MySql数据类型对应列表
1. Mybatis JdbcType与Oracle.MySql数据类型对应列表 Mybatis JdbcType Oracle MySql JdbcType ARRAY JdbcType B ...
随机推荐
- (一)用less+gulp+requireJs 搭建项目(了解less)
项目完结 做个总结: 公司网站重构,整站都需要重写,终于有机会接触下 less,gulp和requireJs,因为以前的工作就是写几个活动页,并没有机会用这些工具,废话不多说,先看下完成后的项目目录: ...
- SchedTune
本文仅是对kernel中的document进行翻译,便于理解.后续再添加代码分析. 1. 为何引入schedtune? schedutil是一个基于利用率驱动的cpu频率governor.它允许调度器 ...
- Java实现蓝桥杯模拟空地长草
问题描述 小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1. 小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地. 这些草长得很快,每个月,草都会向外长出一 ...
- Java实现 LeetCode 28 实现strStr()
28. 实现 strStr() 实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 ...
- 一篇文章快速搞懂 Atomic(原子整数/CAS/ABA/原子引用/原子数组/LongAdder)
前言 相信大部分开发人员,或多或少都看过或写过并发编程的代码.并发关键字除了Synchronized,还有另一大分支Atomic.如果大家没听过没用过先看基础篇,如果听过用过,请滑至底部看进阶篇,深入 ...
- java解决poi导出excel文字水印,导出excel不可操作问题
首先需求是用户提出导出excel数据需使用水印备注其用途: 其实就是在导出excel的同时带有自定义文字水印的导出. 那么我们首先想到的肯定是以一个什么样的思路去解决该问题,首先查找poi导出exce ...
- rpm安装Clickhouse
1. 下载相关安装包 在opt目录下创建clickhouse目录,方便下载文件 Cd /opt/clickhouse 一次执行一下命令 ① wget --content-disposition ht ...
- set基本运用
/* set集合基本用法 */ #include<iostream> #include<set> using namespace std; //set<T>a; v ...
- vue cli3 创建的项目中eslint 配置 问题的解决
1-- vue cli3 项目文件结构 2-- 注释问题 在eslintrc.js 文件中,将 '@vue/standard' 注释后重启即可: 3-- 配置 eslint 文件 在 vue-cl ...
- MySQL索引实践
数据库索引本质上是一种数据结构(存储结构+算法),目的是为了加快数据检索速度. 1.索引的类型(待完善) 主键索引:给表设置主键,这个表就拥有主键索引. 唯一索引:unique 普通索引:增加某个字段 ...