Oracle number类型详解

Oracle number类型详解Oraclenumber类型详解简介基本说明容易出错情况Number与MySQL数据类型简介Oracle的number类型比较复杂,很多限制,但是掌握一点小技巧就能轻松搞定。基本说明number(precision,scale)precision表示数字中的有效位,从左边第一个不为0的数算起,小数点和负号不计入有效位数precision的取值范围是[1,38]precision默认值为38,number等价于number(38)scale大于0,表示数字精确到小数点右边的位数,numb

大家好,又见面了,我是你们的朋友全栈君。

简介

Oracle的number类型比较复杂,很多限制,但是掌握一点小技巧就能轻松搞定。

oracle number

基本说明

number(precision,scale)

  1. precision表示数字中的有效位,从左边第一个不为0的数算起,小数点和负号不计入有效位数
  2. precision的取值范围是[1,38]
  3. precision默认值为38,number等价于number(38)
  4. scale大于0,表示数字精确到小数点右边的位数,number(2,3)表示精确到小数点左边3位
  5. scale小于0,表示数字取舍到小数点左边的位数,number(3,-2)表示四色五人到百位,123,变为100
  6. scale的取值范围是[-84,127]
  7. scale默认值为0
  8. number整数部分允许的最大长度为precision-scale
  9. number整数部分的长度 大于 precision-scale 时出错,例如number(3,2)就不能存12.34,因为精度不够
  10. number小数部分的长度 大于 scale时,就会对小数部分多出来的位数四舍五入,例如number(3,1),存储3.1415的时候就会存3.1
  11. scale为负数时,对小数点左边的sacle个数字进行四舍五入,如number(5,-3),存储1234567.89,存储值为1235000,可以看到0没有占有有效位

违背第一直觉的项来了:

scale 大于 precision 时, precision表示小数点后第scale位向左最多可以有多少位数字,如果大于p则出错错,小数点后s位向右的数字四舍五入。

换个思路,换个说法,也许就好理解了。scale大于precision的时候,小数部分的精度大于整个数的精度只可能是一种情况,这个数就是小数,并且多半是0.00…xx这种。

例如,number(2,3),小数部分有3位,但是数据只能精确两位,那就只能存0.012这种,只需存12两位有效数字,如果是0.12这种就存不了,因为0.12三位有效数字就是0.120,存不了这么多位。

容易出错情况

  1. number(8),存储1234567.89是没有问题,因为没有定义小数位,小数位被舍弃合理
  2. number(6),不能存储1234567.89,虽然没有存储小数位,但是整数位也不够
  3. number(9,3),不能存储1234567.89,虽然精度是9位,但是定义了小数位占了3位,只有6位整数位,1234567有7位
  4. number(7,2),不能存储1234567.89,没啥好说的,精度不够,7位不足以存储9位数字
  5. number(2,3),不能存储0.23,小数部分有3位有效数字,0.230,精度只有2位,不足以存储

Number与MySQL数据类型

MySQL数据类型 字节大小 范围-有符号 范围-无符号 oracle number
tinyint 1 bytes (-128,127) (0,255) number(3)
smallint 2 bytes (-32 768,32 767) (0,65 535) number(5)
mediumint 3 bytes (-8 388 608,8 388 607) (0,16 777 215) number(8)
integer 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) number(10)
bigint 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) number(20)

Oracle的number和MySQL的decimal非常像,但是在数据类型上区分的更细,能更好的利用存储空间,提高性能。

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163892.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ecilpse运行Tomcat显示端口被占用Several ports (8005, 8080, 8009)「建议收藏」

    ecilpse运行Tomcat显示端口被占用Several ports (8005, 8080, 8009)「建议收藏」ecilpse运行Tomcat显示端口被占用Several ports (8005, 8080, 8009)

  • c语言的stl库_c语言string库

    c语言的stl库_c语言string库今天推荐一个函数库glib注意不是glibc https://developer.gnome.org/glib/一直在抱怨,标准C中为什么没有类似于STL的标准容器,让全世界的程序员在数以万次的重复实现它们。不过,还算走运,有了glib,恶梦在此终结了。glib提供了动态数组、单/双向链表、哈希表、多叉树、平衡二叉树、字符串等常用容器,完全是面向对象设计的,实现得非常精致。

    2022年10月15日
  • 展频技术是如何搞定时钟信号的辐射的呢_辐射电磁波的频率

    展频技术是如何搞定时钟信号的辐射的呢_辐射电磁波的频率先前我们说了说:为什么时钟信号比数据信号更容易引起辐射超标?为什么时钟信号比数据信号更容易引起辐射超标?并且做了试验,如果认真看过的话,就会明白,周期性的信号是窄带频谱,特定的频率的幅值会很高,这对认证测试来说非常的不利。而一般时钟信号都是周期信号,这在电路中是少不了的。有没有什么办法,改造下时钟的频谱,同时又不影响功能呢?答案是有的,那就是展频技术。展频技术的应用展频技术经常用于解决辐射问题,比如我们前面说的音频功放,需要接LC滤波器。就有的厂家通过展频技术,推出不需要LC滤波器.

    2022年10月25日
  • 【PCIe】配置空间

    【PCIe】配置空间介绍PCI/PCIe配置空间。

  • C语言格式输出

    C语言格式输出格式说明由“%”和格式字符组成,如:%d%f等。它的作用是将输出的数据转换成指定的格式输出。格式说明总是由“%”字符开始的。格式字符有:d、o、x、u、c、s、f、e、g等。1、%d整形输出,%ld长整形输出。2、%o以八进制数形式输出整数。3、%x以十六进制形式输出整数,或输出字符串的地址。4、%u以十进制数输出unsigned型整数(无符号数)。注意:%d与%u有无符号数值范围。5、%c用来输出一个字符。6、%s用来输出一个字符串。7、%f用来输出实数,以小数形式输出,默认情况下保留小数

  • Java单例模式8种方式 详解

    Java单例模式8种方式 详解Singleton所谓单例,指的就是单实例,有且仅有一个类实例,这个单例不应该由人来控制,而应该由代码来限制,强制单例。运用场景很多,例如网站的在线人数,window系统的任务管理器,网站计数器等等,这些都是单例模式的运用。单例模式有常见的8种形式,如下:1.Lazy1【不可用】懒汉式1:线程不稳定延迟初始化多线程不安全是最基本的实现方式,不支持多线程,因为没有synchronized加锁,多线程不能工作。实现图多线程则会出现,当Singleton_La

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号