当前位置: 首页 > article >正文

达梦:dts工具迁移mysql decimal(65,30)的字段,报精度超出定义

 
本文旨在分享迁移MySQL decimal字段​​​​​​​时遇到“精度超出定义”问题时,如何理解MySQL和达梦对于decimal 等这一类数值数据类型。

1.了解达梦的数值数据类型定义 

​​​​​​​​​​​​​​NUMERIC 类型

语法:NUMERIC[(精度 [, 标度])]

功能:NUMERIC 数据类型用于存储零、正负定点数。其中:精度是一个无符号整数,定义了总的数字数,精度范围是 1 至 38。标度定义了小数点右边的数字位数。一个数的标度不应大于其精度,如果实际标度大于指定标度,那么超出标度的位数将会四舍五入省去。例如:NUMERIC(4,1)定义了小数点前面 3 位和小数点后面 1 位,共 4 位的数字,范围在-999.9 到 999.9。所有 NUMERIC 数据类型,如果其值超过精度,DM 会返回一个出错信息,如果超过标度,则多余的位会被截断。

如果不指定精度和标度,缺省精度为 38,标度无限定。

2.实际案例分享:

我之前遇到过mysql deciamal(65,30)的,按自动转的话,达梦这边是dec(38,30) ,默认的转换,如果遇到整数位大于8的话,就存不下,会报:精度超出定义

mysql decimal(65,30):mysql的最大精度是65,65-30=35,说明mysql的整数部分是35位,小数点右边是30位小数。


dec(38,30):达梦最大精度只能到38,38-30=8, 说明达梦的整数部分是8位,小数点右边是30位小数。

如果为了满足整数位的位数,不引起“精度超出定义”​​​​​​​的报错,对于mysql的decimal(65,30),达梦这边应该转成dec(38,3),就是35个整数位,3个小数位。

但实际也不能直接这个去设置,还是要看数据

因为直接这么转,小数位的数值也很重要的话,会失去数值的精度。

欢迎交流指导~

~~~~~~~~~~~~~~~分享完毕~~~~~~~~~~~~~~~~

更多内容,请访问达梦社区地址:https:eco.dameng.com


 


http://www.kler.cn/a/17291.html

相关文章:

  • 外星人入侵
  • Day09 C++ 存储类
  • AI生活之我用AI处理Excel表格
  • 常见error集合
  • Python 小高考篇(2)字符串
  • 快速学习Serde包实现rust对象序列化
  • 净利润下滑13%,帅丰电器已掉队?
  • ChatGPT 探讨内存屏障的意内存
  • 虹科荣誉 | 虹科工业物联网产品荣获中国自动化产业年会用户信赖产品奖!
  • 将 Segment Anything 扩展到医学图像领域
  • 数据埋点2
  • 华为OD机试 - 识图谱新词挖掘(Python)
  • PBDB Data Service:Output formats and Vocabularies(输出格式与术语表)
  • 腾讯高工手写13W字“Netty速成手册”,3天走向实战
  • 《可穿戴监测中的数据质量评估》阅读笔记
  • TypeScript进阶
  • 【数字IC前端笔试真题精刷(2022年)】大疆——数字芯片开发工程师A卷
  • Python | 人脸识别系统 — 用户操作
  • 单链表——单链表的定义及基本操作(初始化、头插法尾插法建表、查找、插入、删除、判空等)
  • 当ChatGPT续写《红楼梦》,能替代原著吗?
  • [计算机图形学]动画与模拟:关键帧动画、质点弹簧系统、运动学与绑定(前瞻预习/复习回顾)
  • 为什么用Selenium做自动化测试
  • ebpf-linux 安全“双刃剑”
  • 不合格机器人工程讲师如何坦然面对失败
  • Java算法比赛常用方法
  • Java入门超详细(内含Java基础 Java高级)