分享

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

 kiss丶筱魔 2010-10-27

类型名称

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多