類型名稱
Oracle
SQLServer
比較
字符數(shù)據(jù)類型 CHAR CHAR :都是固定長度字符資料但oracle里面最大度為2kb,SQLServer里面最大長度為8kb
變長字符數(shù)據(jù)類型 VARCHAR2 VARCHAR :racle里面最大長度為4kb,SQLServer里面最大長度為8kb
根據(jù)字符集而定的固定長度字符串 NCHAR :NCHAR 前者最大長度2kb后者最大長度4kb
根據(jù)字符集而定的可變長度字符串 NVARCHAR2 NVARCHAR :者最大長度都為4kb
日期和時間數(shù)據(jù)類型 DATE 有Datetime和Smalldatetime兩種 在oracle里面格式為DMY在SQLSerser里面可以調(diào)節(jié),默認(rèn)的為MDY
數(shù)字類型 NUMBER(P,S) NUMERIC[P(,S)] :Oracle里面p代表小數(shù)點(diǎn)左面的位數(shù),s代表小數(shù)點(diǎn)右面的位數(shù)。而SQLServer里面p代表小數(shù)點(diǎn)左右兩面的位數(shù)之和,s代表小數(shù)點(diǎn)右面的位數(shù)。
數(shù)字類型 DECIMAL(P,S) DECIMAL[P(,S)] :racle里面p代表小數(shù)點(diǎn)左面的位數(shù),s代表小數(shù)點(diǎn)右面的位數(shù)。而SQLServer里面p代表小數(shù)點(diǎn)左右兩面的位數(shù)之和,s代表小數(shù)點(diǎn)右面的位數(shù)。
整數(shù)類型 INTEGER INT 同為整數(shù)類型,存儲大小都為4個字節(jié)
浮點(diǎn)數(shù)類型 FLOAT FLOAT
實(shí)數(shù)類型 REAL REAL
ORACLE的數(shù)據(jù)類型
常用的數(shù)據(jù)庫字段類型如下:
字段類型 中文說明 限制條件 其它說明
CHAR 固定長度字符串 最大長度2000 bytes
VARCHAR2 可變長度的字符串 最大長度4000 bytes 可做索引的最大長度749
NCHAR 根據(jù)字符集而定的固定長度字符串 最大長度2000 bytes
NVARCHAR2 根據(jù)字符集而定的可變長度字符串 最大長度4000 bytes
DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS)
LONG 可變長度的字符數(shù)據(jù) 最大長度2G(231-1)足夠存儲大部頭著作
RAW 固定長度二進(jìn)制數(shù)據(jù) 最大長度2000 bytes 可存放比較小的多媒體圖象聲音等
LONG RAW 可變長度的二進(jìn)制數(shù)據(jù) 最大長度2G 可存放比較大的多媒體圖象聲音等
BLOB 大型的二進(jìn)制對象(可變長度)最大長度4G
CLOB 大型的CHAR類型數(shù)據(jù)
NCLOB 大型的NCHAR類型數(shù)據(jù)
BFILE 存放在數(shù)據(jù)庫外的大型的二進(jìn)制文件
ROWID 數(shù)據(jù)表中記錄的唯一行號10 bytes ********.****.****格式,*為0或1,存儲在索引中。
UROWID 同上 存儲在索引中
NROWID 二進(jìn)制數(shù)據(jù)表中記錄的唯一行號 最大長度4000 bytes
NUMBER(P,S) 數(shù)字類型 P為總的位數(shù),S為小數(shù)位
DECIMAL(P,S) 數(shù)字類型P為總的位數(shù),S為小數(shù)位
INTEGER 整數(shù)類型 的整數(shù)
FLOAT 浮點(diǎn)數(shù)類型
NUMBER(38),雙精度
REAL 實(shí)數(shù)類型
NUMBER(63),精度更高
注意:每個表中只能有一個LONG或LONG RAW列,……….。
二者映射關(guān)系: From SQL Server To Oracle
SQL Server 2000 數(shù)據(jù)類型
Oracle 數(shù)據(jù)類型
bigint
NUMBER
binary
LONG RAW NOT NULL
bit
NUMBER (1, 0)
char
VARCHAR2 (900) NOT NULL
datetime
DATE
decimal
NUMBER (255, 3) NOT NULL
float
FLOAT NOT NULL
image
LONG RAW
int
NUMBER (255, 3) NOT NULL
money
NUMBER (255, 3) NOT NULL
nchar
VARCHAR2 (2000) NOT NULL
ntext
LONG
numeric
NUMBER (255, 3) NOT NULL
nvarchar
VARCHAR2 (2000) NOT NULL
real
FLOAT NOT NULL
smallint
NUMBER (255, 3) NOT NULL
smalldatetime
DATE NOT NULL
smallmoney
NUMBER (255, 3) NOT NULL
sql_variant
LONG
sysname
CHAR(255)
text
LONG
timestamp
RAW (255)
tinyint
NUMBER (255, 3) NOT NULL
From Oracle To SQL Server
Oracle
Microsoft SQL Server
CHAR
建議使用 char。因?yàn)?char 類型的列使用固定的存儲長度,所以,訪問時比 varchar 列要快一些。
VARCHAR2
和 LONG
varchar 或 text。(如果 Oracle 列中數(shù)據(jù)值的長度為 8000 字節(jié)或更少,則使用 varchar;否則,必須使用 text。)
RAW 和
LONG RAW
varbinary 或 image。(如果 Oracle 列中數(shù)據(jù)值的長度為 8000 字節(jié)或更少,則使用 varbinary;否則,必須使用 image。)
NUMBER
如果整數(shù)在 1 和 255 之間,使用 tinyint。
如果整數(shù)在 -32768 和 32767 之間,使用 smallint。
如果整數(shù)在 -2,147,483,648 和 2,147,483,647 之間,則使用 int。
如果需要浮點(diǎn)類型數(shù),使用 numeric(有精度和小數(shù)位)。
注意:不要使用 float 或 real,因?yàn)榭赡軙a(chǎn)生舍入(Oracle NUMBER 和 SQL Server numeric 均不舍入)。
如果不確定,則使用 numeric;它最接近 Oracle NUMBER 數(shù)據(jù)類型。
ROWID
使用 identity 列類型。
CURRVAL, NEXTVAL
使用 identity 列類型以及 @@IDENTITY、IDENT_SEED() 和 IDENT_INCR() 函數(shù)。