Oracle中的decimal与Number区别

Oracle只是在语法上支持decimal类型,但是在底层实际上它就是number类型,支持decimal类型是为了能把数据从Oracle数据库移到其他

一、decimal类型详细

Oracle只是在语法上支持decimal类型,但是在底层实际上它就是number类型,支持decimal类型是为了能把数据从Oracle数据库移到其他数据库中(如DB2等)。

 因为decimal在Oracle底层就是number类型,所以就当number类型使用就可以了,如果需要对这种字段类型转为char类型可以用to_char函数对其转换。

decimal类型从根本上说应该是数字类型的,因为oracle内部的数据类型,对于数字只有number类型,都当数字类型进行处理即可。decimal(8,2)代表数字总共8位长度,小数部分是2位。范围是8位,精确到小数点后2位,并四舍五入,即存6位整数,两位小数。也就是最大值可以是999999.99,可存放2位小数。Oracle中,可以使用to_char函数对数字进行转换,使它变成字符类型.

二、NUMBER类型详细

在Oracle中Number类型可以用来存储0,正负定点或者浮点数,可表示的数据范围在

1.0 * 10(-130) —— 9.9…9 * 10(125) {38个9后边带88个0}

 的数字,当Oracle中的数学表达式的值>=1.0*10(126)时,Oracle就会报错。

Number的数据声明如下:

表示

作用

说明

Number(p, s)

声明一个定点数

p(precision)为精度,s(scale)表示小数点右边的数字个数,精度最大值为38,,scale的取值范围为-84到127

Number(p)

声明一个整数

相当于Number(p, 0)

Number

声明一个浮点数

其精度为38,要注意的是scale的值没有应用,也就是说scale的指不能简单的理解为0,或者其他的数。

定点数的精度(p)和刻度(s)遵循以下规则:
 
当一个数的整数部分的长度> p-s 时,Oracle就会报错
 
当一个数的小数部分的长度> s 时,Oracle就会舍入。
 
当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。
 
当s > p时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入.
 
NUMBER类型细讲
 
Oracle number datatype 语法:NUMBER[(precision [, scale])]
 简称:precision –> p
      scale    –> s
 
NUMBER(p, s)
 范围:1  保存数据范围:-1.0e-130  保存在机器内部的范围:1 ~ 22 bytes
 
有效位:从左边第一个不为0的数算起的位数。
 s的情况:
 s > 0
    精确到小数点右边s位,并四舍五入。然后检验有效位是否 s     精确到小数点左边s位,并四舍五入。然后检验有效位是否 s = 0
    此时NUMBER表示整数。

eg:
 Actual Data  Specified As  Stored As
 —————————————-
 123.89          NUMBER        123.89
 123.89          NUMBER(3)    124
 123.89          NUMBER(6,2)  123.89
 123.89          NUMBER(6,1)  123.9
 123.89          NUMBER(4,2)  exceeds precision (有效位为5, 5 > 4)
 123.89          NUMBER(6,-2)  100
 .01234          NUMBER(4,5)  .01234 (有效位为4)
 .00012          NUMBER(4,5)  .00012
 .000127      NUMBER(4,5)  .00013
 .0000012      NUMBER(2,7)  .0000012
 .00000123    NUMBER(2,7)  .0000012
 1.2e-4          NUMBER(2,5)  0.00012
 1.2e-5          NUMBER(2,5)  0.00001
 123.2564      NUMBER        123.2564
 1234.9876    NUMBER(6,2)  1234.99
 12345.12345  NUMBER(6,2)  Error (有效位为5+2 > 6)
 1234.9876    NUMBER(6)    1235 (s没有表示s=0)
 12345.345    NUMBER(5,-2)  12300
 1234567      NUMBER(5,-2)  1234600
 12345678      NUMBER(5,-2)  Error (有效位为8 > 7)
 123456789    NUMBER(5,-4)  123460000
 1234567890    NUMBER(5,-4)  Error (有效位为10 > 9)
 12345.58      NUMBER(*, 1)  12345.6
 0.1          NUMBER(4,5)  Error (0.10000, 有效位为5 > 4)
 0.01234567    NUMBER(4,5)  0.01235
 
0.09999      NUMBER(4,5)  0.09999

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1894390.html

(0)
上一篇 2025年2月22日 13:41:43
下一篇 2025年2月22日 13:42:02

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Oracle的sqlnet.ora与password文件试验

    Oracle的%ignore_a_1%与password文件试验 先看有没有sqlnet.ora [oracle@localhost ~]$ cd $oracle_home[oracle@localhost dbhome_1]$ cd ne…

    数据库 2025年2月23日
    100
  • 把文件系统的数据文件迁移到ASM存储

    RAC环境,使用的是ASM作存储。近日在给用户做%ignore_a_1%维护的过程中,发现有一部分数据文件存放在文件系统中,这是不正常的。导致另 把文件系统的数据文件迁移到asm存储 RAC环境,使用的是ASM作存储。近日在给用户做数据库维…

    数据库 2025年2月23日
    100
  • Oracle递归函数

    树结构的数据存放在表中,数据之间的层次关系即父子关系,通过表中的列与列间的关系来描述,如EMP表中的EMPNO和MGR。EMPNO表示该 oracle start with connect by 用法 oracle中 connect by …

    数据库 2025年2月23日
    100
  • Oracle递归查询的原理

    以start with ename = 在oracle 10g下,来到scott用户下,分别以层次 1,2,3,4上的节点做实验: 当start with是根节点(level=1),要查其子节点,connect by pump和emp都是被…

    数据库 2025年2月23日
    100
  • Oracle 事务的开始与结束

    事务完成之后,如果不显示地提交或回滚事务,都被认为是不好的编程习惯,因此确保在每个事务后面都要执行COMMIT或ROLLBACK语句。 事务是用来分割%ignore_a_1%活动的逻辑工作单元,事务即有起点,,也有终点; 当下列事件之一发生…

    数据库 2025年2月23日
    100
  • impdp异常中断导致出现问题的解决

    今天查看%ignore_a_1%的负载,发现cpu消耗异常的高。里面有不少dw的进程.但是查看impdp的进程却不存在。查看datapump的进程情况,发现大 今天查看数据库的负载,发现cpu消耗异常的高。里面有不少dw的进程.但是查看im…

    数据库 2025年2月23日
    100
  • Oracle SQL执行计划基线总结(SQL Plan Baseline)

    Oracle 11g开始,提供了一种新的固定执行计划的方法,即SQL plan baseline,中文名SQL执行计划基线(简称基线),可以认为是OUTL 一、基础概念 oracle 11g开始,提供了一种新的固定执行计划的方法,即sql …

    数据库 2025年2月23日
    100
  • RAC创建Oracle白名单

    由于业务需要,需要使用白名单限制用户登录%ignore_a_1%的地址,决定使用数据库白名单功能! 由于业务需要,需要使用白名单限制用户登录数据库的地址,决定使用数据库白名单功能! 一般但实例数据库启动白名单只需要在sqlnet.ora中添…

    数据库 2025年2月23日
    100
  • MySQL中my.cnf参数设定解析

    1.获取当前配置参数要优化配置参数,首先要了解当前的配置参数以及运行情况。使用下列命令可以获得目前服务器使用的配置参数:%ignore_a_1%d nda 1.获取当前配置参数要优化配置参数,首先要了解当前的配置参数以及运行情况。使用下列命…

    数据库 2025年2月23日
    100
  • 新手知识 选择正确的MySQL安装包

    MySQL具有很多不同的形式,至少有四种不同的版本:MySQL standard、MySQL Max、MySQL Pro以及MySQL Classic。 除了许可证以外,MySQL St   MySQL具有很多不同的形式,至少有四种不同的版…

    数据库 2025年2月23日
    100

发表回复

登录后才能评论