2009-12-15 177 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位數字。這六個小數位需要三個字節。