oracle类型number类型,Oracle的number数据类型

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可以直接设置自增,需要建立序列,和触发器。例:

先建张表

9949994e156ed1dd390dbabf8750b205.png

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

CREATE SEQUENCE test_sequence

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

NOMAXVALUE -- 不设置最大值

NOCYCLE -- 一直累加,不循环

NOCACHE -- 不建缓冲区

3891cb7c912b9cd0ff1bedf3d3950d75.png

再创建一个触发器

CREATE OR REPLACE TRIGGER test_trigger

BEFORE INSERT ON test

FOR EACH ROW

BEGIN

SELECT test_sequence.nextval INTO :new.id FROM dual;

END;

5c80c7f14d15bc1fca3b2b5b24b15a86.png

插入数据进行测试

8409a0816e24fda4fe4b69fed2fb2cb3.png

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

a80ff3556704e45b2a33ef949d89069a.png

【转】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 ...

随机推荐

Elasticsearch 1.X 版本Java插件开发

接上一篇 开发1.X版本elasticsearch java插件与2.X版本有一些不同,同时在安装部署上也有些不同,主要区别 ...

poj 2524 Ubiquitous Religions(宗教信仰)

Ubiquitous Religions Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 30666   Accepted: ...

mysql脚本mysql_safe解释、mysql.sock文件、mysql_install_db

1.首先解释下,启动mysql时为何会调用mysql_safe脚本来启动mysql [root@localhost ~]# /etc/init.d/mysqld start 正在启动 mysqld: ...

获取当前时间日期并格式化--JS

工作当中,总是遇到很多觉得不错的JS脚本.现在觉得还是找个地方记录下来,以后可以随时查看. /** *获取当前时间日期并格式化 */ function getNowDate(){ var mydate ...

关于curl_setopt参数的记录

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE) 其中true输出执行结果,false为不输出 fsockopen与curl_setopt请求的区别之一就是 ...

自己动手写List集合(C#)

平时经常使用微软的List集合,觉得理所应当,这阵子突然意识到学编程学这么久,总不能只生存在某个平台某种语言下面.我觉得要跳出这个框,而数据结构是经常用到的,所以呢,作为一个有志向的程序员应该学会它. ...

tensorflow softplus应用

1.softplus函数表达式 图像: 2.tensorflow 举例 import tensorflow as tf input=tf.constant([0,1,2,3],dtype=tf.flo ...

使用gunicorn将django项目部署到生产环境的子目录下,在nginx后端获取客户真实IP地址

生产环境有时,并不是为了一个项目而存在的.毕竟,域名是比较稀有的. 今天遇到这个问题,解决了.作个记录. 并且,如果将django项目部署在Nginx后面,那如何获取用户真实的IP地址呢? 下面就来解 ...

UTF8最好不要带BOM,附许多经典评论

UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM.所以不含 BOM 的 UTF-8 才是标准形式,在 UTF-8 文件中放置 BOM 主要是微软的习惯(顺便提一 ...

perl: warning: Setting locale failed.

本篇文章由:http://xinpure.com/perl-warning-setting-locale-failed/ 将 mac 系统切换成英文后,使用 git 命令出现如下错误: perl: w ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值