最近一直在編和Oracle數據庫相關程序。
Oracle的Number類型和C語言,C#語言類型的對應關系,在網絡上查找很久,也沒有找到說明文字。
但在http://oracle.chinaitlab.com/induction/734741.html有《Oracle與DB2數據類型分類對應說明》,根據這篇文章,我總結了一下Oracle的Number類型和C語言,C#語言類型的對應關系。
NUMBER,是以十進制格式進行存儲的,它便於存儲,但是在計算上,系統會自動的將它轉換成為二進制進行運算的。它的定義方式是NUMBER(P,S),P是精度,最大38位,S是刻度范圍,可在-84...127間取值。例如:NUMBER(5,2)可以用來存儲表示-999.99...999.99間的數值。P、S可以在定義是省略,例如:NUMBER(5)、NUMBER等;
首先,必須聲明,Oracle的Number類型和C語言,C#語言類型的對應沒辦法做到完全的一對一,下面的表格只能作為大致的參考。
Oracle | DB2/400 | C | C# | C/C#數據范圍 |
NUMBER | Float(n)/REAL/DOUBLE | double | double | 1.7E +/- 308 (15 digits) |
NUMBER(p) p<=4 |
SAMLLINT DECIMAL(p) NUMBER(p) |
short | Int16 | –32,768 to 32,767 NUMBER(5) |
NUMBER(p) 5<=p<=9 |
INTEGER DECIMAL(p) NUMBER(p) |
int | Int32 | –2,147,483,648 to 2,147,483,647 NUMBER(10) |
NUMBER(p) 10<=p<=19 |
BIGINT DECIMAL(p) NUMBER(p) |
__int64 | Int64 | –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 NUMBER(19) |
NUMBER(p,s) p=7 s=3 |
Float(n) DECIMAL(p,s) NUMBER(p,s) |
float |
float | 3.4E +/- 38 (7 digits) |
NUMBER(p,s) p=15 s=5 |
REAL DECIMAL(p,s) NUMBER(p,s) |
double | double | 1.7E +/- 308 (15 digits) |
NUMBER(p,s) p=15 s=5 |
DOUBLE DECIMAL(p,s) NUMBER(p,s) |
double | double | 1.7E +/- 308 (15 digits)
|