ITPub博客

首页 > 数据库 > Oracle > [转]SQL Server与oracle两者区别之数据类型区别

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

Oracle 作者:quanyecha123456 时间:2013-04-26 22:16:28 0 删除 编辑

原文链接:http://hi.baidu.com/zff_i_java/item/4f864915ca7f8441e65e06da

 

类型名称

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

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22529509/viewspace-1115700/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-09-13