oracle数据库数值类型

---恢复内容开始---

内容摘自网络

Oracle的数值类型有int,number,float,decimal,numberic等。

NUMBER类型

定义

定义格式NUMBER (precision,scale)

precision表示数字中的有效位(从左边第一个不为0的数算起,小数点和负号不计入有效位数),取值范围为【1-38】默认38。

scale表示精确到多少位,取值范围为【-84-127】,默认值为0。大于零时,表示数字精确到小数点右边的位数;小于零时,将把该数字取舍到小数点左边的指定位数,所以,NUMBER整数部分允许的长度为(precision- scale),无论scale是正数还是负数,并且,如果precision小于scale,表示存储的是没有整数的小数。

关于number的精度(p)和刻度(s)遵循以下规则:

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

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

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

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

案例


实际值


数据类型


存储值


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)


出错

NUMBER类型的子类

decimal,numeric,int等都为SQL、DB2等数据库的数据类型,ORACLE为了兼容才将其引入;但实际上在ORACLE内部还是以NUMBER的形式将其存入,所以在集合关系上它们也都是number的子集。

int类型只能存储整数;

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

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

---恢复内容结束---

时间: 2024-08-26 17:49:09

oracle数据库数值类型的相关文章

Oracle数据库date类型与Java中Date的联系与转化

以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助.new Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),就是系统当前.new Date(long date) : 分配 Date 对象并初始化此对象,以表示自从标准基准时间    (称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数.long getTime() :返回自 1970 年 1 月 1 日 00:00

oracle数据库语言类型

oracle数据库语言类型一般分为五大类型 1 DDL(data definition language)数据定义语言 CREATE TABLE :创建表 ALTER TABLE :修改表 DROP TABLE:删除表(对表整体删除,表结构也不存在了) TRUNCATE TABLE :删除表(删除所有行,表结构还在) 2 DML(data Manipulation language)数据操纵语言 INSERT :插入 UPDATE :更新 DELETE:删除 3 DQL(Data Query L

Oracle数据库数值、日期函数的学习

一.数值函数的学习 1)number(p,s).number(p).number(*,s),p的值为1-38之间. 2)数值类型的兼容性 --:numeric(p,s) 相当于number(p,s) --:decimal(p,s)或dec(p,s) 相当于number(p,s) --:integer或int(不能指定位数)相当于number(38) --:smallint相当于number(38) --:float相当于number --:double precision相当于number --

Oracle数据库设计类型选择错误的隐患

数据类型不准确的一个隐患,下面来构造一张表存日期字段,一个存varchar2,一个存date,做一个测试.之前也写过两篇blog: 1.字段类型设计与实际业务不符引发的问题1 2.字段类型设计与实际业务不符引发的问题2 SQL> drop table test purge; SQL> create table test as select to_char(to_date('2014-01-01','yyyy-MM-dd')+rownum,'yyyymmdd') s_date, to_date(

新霸哥带你轻松玩转Oracle数据库

接触过软件开发的朋友可能都会知道oracle,在开发的过程中,数据存储都可能会用到oracle的,因为oracle具有处理速度快,安全级别特别的高.但是有一个缺点就是比较的贵,只有一个大型的公司才有可能接触到的,看到这里可能很多的朋友一定很想了解oracle吧,下面新霸哥将带你走进oracle的世界. 首先介绍一下Oracle中对于字符串的处理 char varchar varchar2 nvarchar long clob这些都是oracle中常用的字符串类型,在这里用的比较多的就是varch

Oracle数据库设计小细节

1. 如果使用PowerDesigner此类工具,注意将工具的导出的SQL语句中对于表的双引号去掉. 2. 建表和建字段的时候,不同单词之间使用下划线分隔,比如 REC_ID 3. Oracle中数值类型字段,应该确定精度,利用MBG反向生成的时候,可以确定是Integer还是BigDecimal. 4. Oracle中的nvarchar2和nvarchar2在被MBG反向生成的时候,会被识别为Object类型,建议使用varchar2. ----------------------------

C#与Oracle数据库

一.连接Oracle数据库 安装客户端: oracle数据库搭建在远程服务器上,本地只需要装个客户端,然后在安装目录下(D:\app\fangs\product\12.1.0\client_3\Network\Admin ,不一定是D盘) 配置tnsnames.ora,配置可以参考同目录下的Sample 文件夹中的内容.就是指明连接名,远程ip,servicename/SID. 然后可以利用sql develper工具打开数据库,查看数据库中的所有内容. c#程序通过ADO.NET连接:  首先

Oracle数据库中的blob类型解析

Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对blob进行操作,因而你在写入Blob之前,必须获得cursor才能进行写入,那么如何获得Blob的cursor呢? 这需要你先插入一个empty的blob,这将创建一个blob的cursor,然后你再把这个empty的blob的cursor用select查询出来,这样通过两步操作

Oracle数据库类型总结

RACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型.数字类型.日期类型.LOB类型.LONG RAW& RAW类型.ROWID & UROWID类型.一 字符串类型CHAR类型 CHAR(size [BYTE | CHAR]) CHAR类型,定长字符串,会用空格填充来达到其最大长度.非NULL的CHAR(12)总是包含12字节信息.CHAR字段最多可以存储2,000字节的信息.如果创建表时,不指定CHAR长度,则默认为1.另外你可以指