2009-12-15 172 views

回答

4

甲骨文实现“INTEGER” ANSI数据类型为NUMBER(38)

详情的同义词请参见“Learn Oracle: Datatypes for SQL and PL/SQL, Numbers

然而,下表应作为Oracle中的数据类型之间的映射和MySQL:

"Oracle® Database SQL Developer Supplementary Information for MySQL Migrations"

甲骨文和MySQL相比>数据类型>比较数据类型

的主要区别,如所解释herehere是Oracle NUMBER数据类型是可变长度格式,而MySQL的DECIMAL曾经是represented as strings that require one byte per digit or sign character

(甲骨文公司(5.0.3版本之前)(n)的数据类型NUMBER数据类型)内部数字格式

Oracle数据库以 可变长度格式存储数值数据。每个数值为 ,以科学计数法存储,其中1 字节用于存储指数,并且上调 至20字节以存储尾数。 生成的值仅限于38位​​数字的精度的 。 Oracle数据库 不存储前导和尾随 零。例如,数字412是 ,以类似于4.12 x 102的格式存储,其中1字节用于存储指数(2)和用于存储 尾数(4,1)的3位有效数字的 指数(2)和2字节,2)。负数 包含其长度的符号。

在字节考虑到这一点,列 大小为特定数字 数据值NUMBER(p),其中p为一给定值的 精度,可以是 使用以下 公式计算:

ROUND((length(p)+s)/2))+1

其中s为零,如果数量是 阳性,和s等于1,如果该数目 是负的。

零和正和负 无穷大(仅在从Oracle数据库版本5导入 时生成)为 使用唯一表示形式存储。 零和负无穷每个 需要1个字节;正无限 需要2个字节。

(MySQL的)十进制数据类型更改为 整数并且每个 值的小数部分

的存储要求是分别确定的。每个 9个数字的倍数需要四个 字节,并且剩余的所有剩余的数字在 之上需要四个 字节的一部分。 [...]

例如,DECIMAL(18,9)柱 对 小数点的任一侧九个数字,所以整数部分和 小数部分均需要4个 字节。 DECIMAL(20,6)列有 十四个整数数字和六个 小数位数。整数数字 需要4个字节用于 数字中的9个数字,另外3个字节用于剩余的5位数字。这六个小数位需要三个字节。