oracle与gbase8s迁移数据类型对照以及举例说明

 更新时间:2023年12月29日 09:33:30   作者:_苏沐  
gbase8s是一个高性能的分布式关系型数据库,下面这篇文章主要给大家介绍了关于oracle与gbase8s迁移数据类型对照以及举例说明的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

声明:以下为笔者阅读gbase官方文档和oracle官方文档的理解,如有错误,敬请指正。

最终结论:oracle与gbase8s数据类型对应关系

边界范围使用数据类型oraclegbase
最大精度126位FLOAT/NUMBERDECIMAL
单精度浮点数数据类型BINARY_FLOATsmallfloat
双精度浮点数数据类型BINARY_DOUBLEFLOAT

下面首先回忆一下精度、定点、浮点的定义,然后再来看oracle、gbase的官方文档。

关于单精度与双精度的区别

单精度和双精度是计算机中用于表示浮点数的两种不同精度的格式。

  • 单精度(Single Precision):单精度浮点数使用32位(4个字节)来存储一个浮点数。它包括一个符号位(用于表示正负)、8位指数和23位尾数。单精度提供大约7位有效数字的精度。
  • 双精度(Double Precision):双精度浮点数使用64位(8个字节)来存储一个浮点数。它包括一个符号位、11位指数和52位尾数。双精度提供大约15-16位有效数字的精度,比单精度更高。

主要区别:

  • 精度: 双精度提供比单精度更高的精度,因为它使用更多的位来表示数字。这使得双精度能够处理更大范围的数值,并提供更高的精确度。
  • 存储需求: 双精度使用的存储空间是单精度的两倍,因此在存储大量数据时,双精度需要更多的内存空间。
  • 计算速度: 在某些情况下,单精度计算可能比双精度计算速度更快,因为它涉及更少的位数和更简单的计算。

选择使用单精度还是双精度通常取决于对精度和内存使用的要求。如果需要更高的精度或者处理非常大或非常小的数值范围,双精度可能更适合。而如果对精度要求不高,但需要节省内存,那么单精度可能更合适。

关于定点与浮点定义的区别

定点数和浮点数是计算机表示数据的两种不同方式。定点数的小数点位置在计算机的存储中是约定好的,这意味着小数位为固定十进制数,而浮点数的小数位则随2的几次幂的大小而浮动。例如,8位定点数可以表示的范围是-16.00~15.875,其最大精度为0.125。

将浮点数转换为定点数的操作包括:首先计算 b = a * 2^F(a为浮点数,F为小数部分字长),然后将b化为整数,最后用二进制将b表示成c。这种转换方法在可以接受精度损失的前提下,有可能提高运算效率。然而,一般而言,定点数的数值范围有限,要求的处理硬件比较简单。

精度的定义

精度是一个衡量测量结果与真实值接近程度的概念,它反映的是误差的大小。如果误差小,则精度高;反之,如果误差大,则精度低。在计算机科学中,精度也用于表示数值的最小度量单位,例如,GPS的精度为0.1m,表示这个GPS最小能识别0.1m的位置差异。同时,精度还被用来描述计算机中小数点前后的总位数,如单精度和双精度分别表示精确到小数点后几位。然而,需要注意的是,仪器的精度并不能完全反映其准确度。

Oracle 分为NUMBER和浮点数

NUMBER

NUMBER数据类型用于存储可能为负值或正值的数值。

数据类型存储定点数和浮点数。精度 38 位有效数字。

NUMBER(p, s):

  • 用于存储数字值,其中p表示精度(最多38位),s表示小数位数取值范围为[-84~127],当s取负数时,将小数点左边的s位置为0,并四舍五入。
  • 当小数位数大于s时,采用四舍五入的方式。当整数部分的长度大于p-s时,报错。
  • 需要22个字节的存储空间。

Oracle FLOAT数据类型是NUMBER数据类型的子类型。FLOAT(b):用于存储浮点数,范围从-1.79E+308到1.79E+308。FLOAT的最大精度是126。二进制精度的最大126位数,大致等于十进制数位数的38位数。

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5CSU%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20231216162440409.png&pos_id=img-BPi20wT4-1702955220839)C:\Users\SU\AppData\Roaming\Typora\typora-user-images\image-20231216162440409.png

浮点数

BINARY_FLOAT 数据类型

BINARY_FLOAT是 32 位单精度浮点数数据类型。每个值需要 5 个字节,包括一个长度字节。BINARY_FLOAT

BINARY_DOUBLE 数据类型

BINARY_DOUBLE是 64 位双精度浮点数数据类型。每个值需要 9 个字节,包括一个长度字节。BINARY_DOUBLE

create table t2 (a binary_float,b binary_double);
insert into t2 values (3.141592653589,3.141592653589);
insert into t2 values (1023.141592653589,1023.141592653589);
insert into t2 values (1023.14159265358933333333,1023.14159265358933333333);

gbase 8s 分精确数值数据类型,近似数值数据类型

精确数值数据类型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

gbase应该是32位最长,oracle是38位

近似数值数据类型

  • smallfloat:8位有效数字的单精度浮点数值
  • float/double:16位有效数字的双精度浮点数值。

建表时,在数据类型声明中接受precision参数,但是该参数对数据库服务器存储的值的实际精度不起作用。

create table t1 (a float,b smallfloat);
desc t1;
insert into t1 values (3.14,3.14);
insert into t1 values (3.1415926,3.1415926);
insert into t1 values (3.141592653589,3.141592653589);
insert into t1 values (1023.141592653589,1023.141592653589);
insert into t1 values (1023.14159265358933333333,1023.14159265358933333333);
select * from t1;

可以看出 smallfloat超过8位有效数字会截断

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以看出指定该参数对数据库服务器存储的值的实际精度不起作用。

查看计算后小数位数是decimal类型

总结

到此这篇关于oracle与gbase8s迁移数据类型对照以及举例说明的文章就介绍到这了,更多相关oracle与gbase8s迁移数据类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用sqlplus命令行工具为oracle创建用户和表空间

    使用sqlplus命令行工具为oracle创建用户和表空间

    这篇文章主要介绍了使用sqlplus为oracle创建用户和表空间的方法,本文介绍的是使用Oracle 9i所带的命令行工具:SQLPLUS,需要的朋友可以参考下
    2017-11-11
  • [Oracle] 解析在没有备份的情况下undo损坏怎么办

    [Oracle] 解析在没有备份的情况下undo损坏怎么办

    Oracle在运行中很不幸遇到undo损坏,当然最好的方法是完全恢复,但如果是在没有备份的情况下undo损坏怎么办?以下就为大家介绍出现这种情况的解决办法,需要的朋友参考下
    2013-07-07
  • Oracle中的高效SQL编写PARALLEL解析

    Oracle中的高效SQL编写PARALLEL解析

    这篇文章主要介绍了Oracle中的高效SQL编写PARALLEL解析,在Oracle中,PARALLEL(并行)方式最大化调用计算机资源来成倍提高数据分析效率,这个在Oracle 9i之后的版本可以使用,需要的朋友可以参考下
    2023-07-07
  • Oracle 存储过程加密方法

    Oracle 存储过程加密方法

    Oracle 存储过程加密方法,需要的朋友可以参考下。
    2009-10-10
  • 在ORACLE移动数据库文件

    在ORACLE移动数据库文件

    在ORACLE移动数据库文件...
    2007-03-03
  • Oracle内存分配不足的过程解析(业务干挂数据库)

    Oracle内存分配不足的过程解析(业务干挂数据库)

    本文介绍了Oracle数据库内存分配不足的问题,原因主要是业务剧增导致的内存不足,通过分析AAS负载、等待事件、transactions和阻塞情况,发现PGA内存出现了严重抖动,感兴趣的朋友一起看看吧
    2025-02-02
  • 在Oracle 8x实现自动断开后再连接

    在Oracle 8x实现自动断开后再连接

    在Oracle 8x实现自动断开后再连接...
    2007-03-03
  • oracle索引的测试实例代码

    oracle索引的测试实例代码

    这篇文章主要给大家介绍了关于oracle索引测试的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Oracle数据库失效对象处理详情

    Oracle数据库失效对象处理详情

    这篇文章主要介绍了Oracle数据库失效对象处理,数据库业务用户(非 SYS/Public)下存在失效对象。对失效对象进行分析,主要包括失效的视图、物化视图、函数、包、触发器等,下面带着些许了解一起深入学习下面文章学习内容吧
    2021-10-10
  • oracle 监听 lsnrctl 命令 (推荐)

    oracle 监听 lsnrctl 命令 (推荐)

    这篇文章主要介绍了oracle 监听 lsnrctl 命令 ,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03

最新评论