类型名称
Oracle
SQLServer
比较
字符数据类型 CHAR CHAR :都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb
变长字符数据类型 VARCHAR2 VARCHAR :racle里面最大长度为4kb,SQLServer里面最大长度为8kb
根据字符集而定的固定长度字符串 NCHAR :NCHAR 前者最大长度2kb后者最大长度4kb
根据字符集而定的可变长度字符串 NVARCHAR2 NVARCHAR :者最大长度都为4kb
日期和时间数据类型 DATE 有Datetime和Smalldatetime两种 在oracle里面格式为DMY在SQLSerser里面可以调节,默认的为MDY
数字类型 NUMBER(P,S) NUMERIC[P(,S)] :Oracle里面p代表小数点左面的位数,s代表小数点右面的位数。而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。
数字类型 DECIMAL(P,S) DECIMAL[P(,S)] :racle里面p代表小数点左面的位数,s代表小数点右面的位数。而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。
整数类型 INTEGER INT 同为整数类型,存储大小都为4个字节
浮点数类型 FLOAT FLOAT
实数类型 REAL REAL
ORACLE的数据类型
常用的数据库字段类型如下:
字段类型 中文说明 限制条件 其它说明
CHAR 固定长度字符串 最大长度2000 bytes
VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749
NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes
NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes
DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS)
LONG 可变长度的字符数据 最大长度2G(231-1)足够存储大部头著作
RAW 固定长度二进制数据 最大长度2000 bytes 可存放比较小的多媒体图象声音等
LONG RAW 可变长度的二进制数据 最大长度2G 可存放比较大的多媒体图象声音等
BLOB 大型的二进制对象(可变长度)最大长度4G
CLOB 大型的CHAR类型数据
NCLOB 大型的NCHAR类型数据
BFILE 存放在数据库外的大型的二进制文件
ROWID 数据表中记录的唯一行号10 bytes ********.****.****格式,*为0或1,存储在索引中。
UROWID 同上 存储在索引中
NROWID 二进制数据表中记录的唯一行号 最大长度4000 bytes
NUMBER(P,S) 数字类型 P为总的位数,S为小数位
DECIMAL(P,S) 数字类型P为总的位数,S为小数位
INTEGER 整数类型 的整数
FLOAT 浮点数类型
NUMBER(38),双精度
REAL 实数类型
NUMBER(63),精度更高
注意:每个表中只能有一个LONG或LONG RAW列,……….。
二者映射关系: From SQL Server To Oracle
SQL Server 2000 数据类型 |
Oracle 数据类型 |
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。因为 char 类型的列使用固定的存储长度,所以,访问时比 varchar 列要快一些。 |
VARCHAR2 和 LONG |
varchar 或 text。(如果 Oracle 列中数据值的长度为 8000 字节或更少,则使用 varchar;否则,必须使用 text。) |
RAW 和 LONG RAW |
varbinary 或 image。(如果 Oracle 列中数据值的长度为 8000 字节或更少,则使用 varbinary;否则,必须使用 image。) |
NUMBER |
如果整数在 1 和 255 之间,使用 tinyint。 如果整数在 -32768 和 32767 之间,使用 smallint。 如果整数在 -2,147,483,648 和 2,147,483,647 之间,则使用 int。 如果需要浮点类型数,使用 numeric(有精度和小数位)。 注意:不要使用 float 或 real,因为可能会产生舍入(Oracle NUMBER 和 SQL Server numeric 均不舍入)。 如果不确定,则使用 numeric;它最接近 Oracle NUMBER 数据类型。 |
ROWID |
使用 identity 列类型。 |
CURRVAL, NEXTVAL |
使用 identity 列类型以及 @@IDENTITY、IDENT_SEED() 和 IDENT_INCR() 函数。 |