Yad*_*ada 5 mysql oracle decimal sqldatatypes
Oracle背景中的某些人使用DECIMAL(31,0)作为整数的原因是什么.在MySQL中它效率不高.
Oracle 将“INTEGER”ANSI 数据类型实现为 NUMBER(38) 的同义词
\n\n有关更多详细信息,请参阅“学习 Oracle:SQL 和 PL/SQL 的数据类型,数字”
\n\n但是,应该使用下表作为 Oracle 和 MySQL 中数据类型之间的映射:
\n\n“Oracle\xc2\xae 数据库 SQL Developer MySQL 迁移的补充信息”
\n\nOracle 和 MySQL 比较 > 数据类型 > 比较数据类型
\n\n主要区别(如此处和此处所述)是 Oracle NUMBER 数据类型是可变长度格式,而 MySQL DECIMAL(n) 数据类型曾经是represented as strings that require one byte per digit or sign character(版本 5.0.3 之前)
\n\n\n(Oracle NUMBER 数据类型)内部数字格式
\n\nOracle 数据库以可变长度格式存储数字数据。每个值都以科学记数法存储,其中 1\n 字节用于存储指数,最多 20 字节用于存储尾数。结果值的精度限制为 38\n 位。Oracle 数据库不存储前导零和尾随零。例如,数字 412 的存储格式与 4.12 x 102 类似,其中 1 个字节用于存储指数 (2),2 个字节用于存储\n 的三位有效数字。尾数(4,1,2)。负数\n 在其长度中包含符号。
\n\n考虑到这一点,可以使用以下公式计算特定数值数据值 NUMBER(p) 的列大小(以字节为单位),其中 p 是给定值的精度:
\n\n\n\n
ROUND((length(p)+s)/2))+1其中,如果数字为正数,则 s 等于 0;如果数字为负数,则 s 等于 1。
\n\n零和正负无穷大(仅在从 Oracle 数据库版本 5 导入时生成)使用唯一的表示形式存储。零和负无穷大各自需要 1 个字节;正无穷\n 需要 2 个字节。
\n
和
\n\n\n\n(MySQL) DECIMAL 数据类型更改
\n\n每个值的整数和小数部分的存储要求是单独确定的。每个九位数的倍数需要四个字节,剩下的任何剩余数字都需要四个字节的一部分。[...]
\n\n例如,DECIMAL(18,9) 列小数点两侧各有 9 个数字,因此整数部分和小数部分各需要 4 个字节。DECIMAL(20,6) 列有 14 个整数位和 6 个小数位。整数位\n 需要四个字节来表示其中的九个数字,\n 需要三个字节来表示剩余的五个数字。六个\n 小数位需要三个字节。
\n
| 归档时间: |
|
| 查看次数: |
1179 次 |
| 最近记录: |