您的位置:首页 > 数据库 > Oracle

SQL Server与oracle两者区别之数据类型区别

2010-08-24 13:38 357 查看
类型名称

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() 函数。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: