oracle与gbase8s迁移数据类型对照
声明:以下为笔者阅读gbase官方文档和oracle官方文档的理解,如有错误,敬请指正。
oracle与gbase8s迁移数据类型对照及举例说明
- 最终结论:oracle与gbase8s数据类型对应关系
- 关于单精度与双精度的区别
- 关于定点与浮点定义的区别
- 精度的定义
- Oracle 分为NUMBER和浮点数
- NUMBER
- 浮点数
- BINARY_FLOAT 数据类型
- BINARY_DOUBLE 数据类型
- gbase 8s 分精确数值数据类型,近似数值数据类型
- 精确数值数据类型
- 近似数值数据类型
最终结论:oracle与gbase8s数据类型对应关系
| 边界范围使用数据类型 | oracle | gbase |
|---|---|---|
| 最大精度126位 | FLOAT/NUMBER | DECIMAL |
| 单精度浮点数数据类型 | BINARY_FLOAT | smallfloat |
| 双精度浮点数数据类型 | BINARY_DOUBLE | FLOAT |
下面首先回忆一下精度、定点、浮点的定义,然后再来看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位数。

C:\Users\SU\AppData\Roaming\Typora\typora-user-images\image-20231216162440409.png](https://img-blog.csdnimg.cn/direct/0915620c1e9b42808d6c77079d9334ea.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迁移数据类型对照
声明:以下为笔者阅读gbase官方文档和oracle官方文档的理解,如有错误,敬请指正。oracle与gbase8s迁移数据类型对照及举例说明 最终结论:oracle与gbase8s数据类型对应关系关于单精度与双精度的区别关于定点与浮点定义的区别精度的定…...
Flink系列之:集合操作
Flink系列之:集合操作 一、集合操作二、UNION三、INTERSECT四、EXCEPT五、IN六、EXISTS 一、集合操作 适用于流、批操作 二、UNION UNION 和 UNION ALL 返回两个表中的数据。 UNION 会去重,UNION ALL 不会去重。 Flink SQL> create view t1(s) as…...
STL:string的常见用法
目录 赋值和连接: operator: 赋值操作符: assign(str): 将字符串赋值为另一个字符串: : 字符串连接操作符: 访问和检查: at(pos): 返回指定位置的字符,提供边界检查。 operator[]: 返回指定位置的字符…...
GBASE南大通用 ADO.NET 中的事务
GBASE南大通用 ADO.NET 中支持事务,可以使用GBASE南大通用Connection 对象的BeginTransaction 函数开始一个事务,并默认使用 ReadCommitted 模式初始化。 事务中可以对单个表执行多个操作,或者对多个表执行多个操作,在事务未提交…...
App(Android)ICP备案号查询——————高仿微信
😄 个人主页:✨拉莫帅-CSDN博客✨🤔 博文:132篇🔥 原创:130篇,转载:2篇🔥 总阅读量:388923❤️ 粉丝量:112🍁 感谢点赞和关注 &#x…...
修改npm源码解决服务端渲染环境中localstorage报错read properties of undefined (reading getItem)
现象: 这个问题是直接指向了我使用的第三方库good-storage,这是一个对localStorage/sessionStorage做了简单封装的库,因为项目代码有一个缓存cache.ts有用到 原因分析: 从表象上看是storage对象找不到getItem方法, 但…...
Educational Codeforces Round 160 (Div. 2) A~C(D,E更新中...)
A.Rating Increase(思维) 题意: 给出一个仅包含数字的字符串 s s s,要求将该字符串按以下要求分成左右两部分 a , b a,b a,b: 两个数字均不包含前导 0 0 0 两个数字均大于 0 0 0 b > a b > a b>a 如果…...
【Maven-Helper】利用 Maven-Helper 解决依赖冲突问题
【Maven-Helper】利用 Maven-Helper 解决依赖冲突问题 1)安装 Maven-Helper 插件2)Maven Helper 插件使用方法3)Idea-Maven 可视化依赖树 1)安装 Maven-Helper 插件 这里我们已经安装过了,如果没有安装过,点…...
C# WPF上位机开发(知识产权ip保护)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 上位机软件如果是和硬件模块搭配开发,这个时候大部分上位机基本上都是白送的,不会收取相关的费用。但是,如果上…...
【Jenkins】Pipeline 语法解析(声明式Pipeline)
文章目录 一、Sections1、agent(代理)agent 参数值 2、post3、stages(阶段)4、steps(步骤) 二、Directives 指令1、environment 环境变量2、options 配置选项可用的选项 options 3、parameters 参数可用的参…...
二叉树的最大深度(LeetCode 104)
文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一:深度优先搜索GolangC 方法二:广度优先搜索GolangC 参考文献 1.问题描述 给定一个二叉树 root ,返回其最大深度。 叉树的「最大深度」是指从根节点到最远叶子节点的最长路径上的节…...
03-数据结构-栈与队列
1.栈 栈和队列是两种操作受限的线性表。如上图所示显示栈的结构 栈:先进后出,入栈(数据进入) 和出栈(数据出去)均在栈顶操作。 常见栈的应用场景包括括号问题的求解,表达式的转换和求值&#…...
功能测试转向自动化测试 。10 年 心路历程——愿测试人不再迷茫
十年测试心路历程: 由于历史原因,大部分测试人员,最开始接触都是纯功能界面测试,随着工作年限,会接触到一些常用测试工具,比如抓包,数据库,linux 等。 我大学学的计算机专业&#…...
VIM ——Vimtutor 个人总结【从入门到精通】
精进 Vim 编辑器技能:从入门到精通 文章目录 精进 Vim 编辑器技能:从入门到精通学习资源[Vim 自带教程中文版 —— vimtutor-CSDN博客](https://blog.csdn.net/qq_40395874/article/details/116047253)[Learn Vimscript the Hard Way (stevelosh.com)](h…...
gitea分支、合并
一、创建分支,推送到远程仓库 git branch dev git checkout dev 或者可以使用合并的命令来完成上述两个步骤: git checkout -b dev在新分支上进行修改、提交代码等操作 接下来,将新分支推送到远程仓库。使用git push命令,并…...
探究 JavaScript 类型检查的利器:typeof 和 instanceof
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
VSCode报错插件Error lens
1.点击左侧扩展图标→搜索“error lens”→点击“安装” 2.安装成功页面如下: 3.代码测试一下:书写代码的过程中会出现红色提醒或红色报错 4.另外推荐小伙伴们安装中文插件,学习过程中会比较实用方便,需要安装中文插件的小伙伴请点…...
go-zero开发入门之gateway深入研究1
创建一个 gateway 示例: // main.go package mainimport ("flag""fmt""gateway/middleware""github.com/zeromicro/go-zero/core/conf""github.com/zeromicro/go-zero/gateway" )var configFile flag.String(&…...
【每日一题】反转二叉树的奇数层
文章目录 Tag题目来源题目解读解题思路方法一:广度优先搜索方法二:深度优先搜索 写在最后 Tag 【深度优先搜索】【广度优先搜索】【二叉树】【2023-12-15】 题目来源 2415. 反转二叉树的奇数层 题目解读 反转二叉树奇数层的节点。 解题思路 对于二叉…...
vue 项目配置反向代理导致项目白屏
问题:vue 项目配置反向代理导致项目白屏 一、现象描述 添加反向代理代码后,前端运行白屏 // 设置baseURL,8888是后端端口号,前端请求默认发送到baseURL的地址 var axios require(axios) axios.defaults.baseURL http://local…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...
