sybase和Oracle数据类型差别,sybase与oracle 字符串种类长度.

转自http://tech.ddvip.com/2007-09/118966372234359.html

在字符长度定然时char的功能比varchar好,而在长度不确定时,char种类的字段在利用时功能略差。此种情形在SQL

Server数据库下面能够揭示,并且这个字段是经常利用的。

差异:

1.char的长度是固 定的,而VARCHAR2的长度是能够改变的,

例如,存储字符串“abc",对于char

(20),表示你存储的字符将占20个字节(包括17个空字符),而同样的varchar2

(20)则只挪借3个字节的长度,20只是最大值,当你存储的字符小于20时,按切实长度存储。由于char是以安宁长度的,因而它的速度会比

varchar快得多!但过程处理起来要繁琐一点,要用trim之类的函数把两旁的空格去掉!

2.char的效率比varchar2的效率稍高。

3.现在varchar是varchar2的同义词。工业规范的varchar种类能够存储空字符串,然而oracle不这么做,尽管它保留尔后这么做的权利。Oracle自己开发了一个数据种类varchar2,这个种类不是一个规范的varchar,它将在数据库中varchar列能够存储空字符串的个性改为存储null值。万一你想有向后接受的力气,Oracle提倡利用varchar2而不是varchar。

何时该用char,何时该用varchar2?

char与varchar2是一对抵触的统一体,两者是互补的联系.

varchar比char勤俭空间,在效率上比char会轻微差一些,即要想获得效率,就定然献身定然的空间,这也即便我们在数据库设计上常说的‘以空间换效率’。

varchar2

固然比char勤俭空间,然而万一一个varchar2列经常被修正,而且每次被修正的数据的长度不同,这会引起‘行迁移’(Row

Migration)假象,而这构成剩余的I/O,是数据库设计和调剂中要竭力避免的,在这种情形下用char轮换varchar2收获会更好一些。

转自http://hi.baidu.com/wjx_5893/blog/item/ae04c4cdfc0f345d0eb345f5.html

char

安宁长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节。char 的

SQL 2003 同义词为 character。

varchar2

可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1

个字节。存储大小是输入数据的切实长度加 2 个字节。所输入数据的长度可感受 0 个字符。SQL-2003 中的 varchar2 即便

char varying 或 character varying。

nchar

n 个字符的安宁长度的 Unicode 字符数据。n 值定然在 1 到 4,摩托罗拉对讲机000 之间(含)。存储大小为两倍 n 字节。nchar 的 SQL-2003 同义词为

national char 和 national character。

nvarchar2

可变长度 Unicode 字符数据。n 值在 1 到 4,000 之间(含)。max 指示最大存储大小为 2^31-1

字节。存储大小是所输入字符个数的两倍 + 2 个字节。所输入数据的长度可感受 0 个字符。nvarchar2 的 SQL-2003

同义词为 national char varying 和 national character varying。

1、CHAR。CHAR存储定长数据很得体,CHAR字段上的索引效率级高,例如定义char(10),那么不论你存储的数据是否到达了10个字节,都要占去10个字节的空间,不足的积极用空格添补,因而在读取的时候可能要多次用到trim()。

2、varchar2。存储变长数据,但存储效率未曾CHAR高。万一一个字段可能的值是不安宁长度的,我们只懂得它不可能超过10个字符,把它定义为

varchar2(10)是最划算的。varchar2种类的切实长度是它的值的切实长度+1。为什么“+1”呢?这一个字节用于保留切实利用了多大的长度。从空间上琢磨,用varchar2轻便;从效率上琢磨,用char轻便,关键是依据切实情形找到权衡点。

3、NCHAR、Nvarchar2、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据种类的字符。我们懂得字符中,英文字符只必需一个字节存储就足够了,但汉字许多,必需两个字节存储,英文与汉字同时存在时轻率构成混乱,Unicode字符集即便为打听决字符集这种不接受的问题而发生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、

nvarchar2的长度是在1到4000之间。和char、varchar2比拟起来,nchar、nvarchar2则最多存储4000个字符,不论是英文还是汉字;而char、varchar2最多能存储8000个英文,4000个汉字。能够看出利用nchar、nvarchar2数据种类时无须担心输入的字符是英文还是汉字,较为得体,但在存储英文时数量上有些磨损。

因而等闲来说,万一含有中文字符,用nchar/nvarchar2,万一纯英文和数字,用char/varchar2遏止其改换的行动注定会失利。不过个人能够批准措施肃清这些担心。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值